sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan tilføjer jeg en "sidst ændret" og oprettet kolonne i en SQL Server-tabel?

Den created kolonnen er enkel - kun en DATETIME2(3) kolonne med en standardbegrænsning, der indstilles, når en ny række indsættes:

Created DATETIME2(3) 
   CONSTRAINT DF_YourTable_Created DEFAULT (SYSDATETIME())

Så når du indsætter en række i YourTable og angiv ikke en værdi for Created , vil den blive indstillet til den aktuelle dato og tid.

Den modified er lidt mere arbejde, da du bliver nødt til at skrive en trigger for AFTER UPDATE case og opdatere det - du kan ikke deklarativt bede SQL Server om at gøre dette for dig....

Modified DATETIME2(3)

og derefter

CREATE TRIGGER updateModified
ON dbo.YourTable
AFTER UPDATE 
AS
   UPDATE dbo.YourTable
   SET modified = SYSDATETIME()
   FROM Inserted i
   WHERE dbo.YourTable.PrimaryKey = i.PrimaryKey

Du skal tilslutte dig Inserted pseudo-tabel, som indeholder alle rækker der blev opdateret med din basistabel på din primære nøgle for det bord.

Og du bliver nødt til at oprette denne AFTER UPDATE trigger for hver tabel, som du vil have en modified kolonne i.



  1. alternativer til REPLACE på en tekst eller ntext datatype

  2. SQL Server MELLEM

  3. Begrænsning for kun én post markeret som standard

  4. Dynamisk pivot i oracle sql - Procedure