Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie füge ich eine „zuletzt geänderte“ und erstellte Spalte in einer SQL Server-Tabelle hinzu?

Der created Spalte ist einfach - nur ein DATETIME2(3) Spalte mit einer Standardeinschränkung, die festgelegt wird, wenn eine neue Zeile eingefügt wird:

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

Wenn Sie also eine Zeile in YourTable einfügen und geben Sie keinen Wert für Created an , wird es auf das aktuelle Datum und die aktuelle Uhrzeit eingestellt.

Der modified ist etwas mehr Arbeit, da Sie einen Trigger für AFTER UPDATE schreiben müssen Fall aktualisieren und aktualisieren - Sie können SQL Server nicht deklarativ anweisen, dies für Sie zu tun....

Modified DATETIME2(3)

und dann

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

Sie müssen dem Inserted beitreten Pseudotabelle, die alle Zeilen enthält die mit Ihrer Basistabelle auf Ihrem Primärschlüssel aktualisiert wurden für diese Tabelle.

Und Sie müssen dieses AFTER UPDATE erstellen Trigger für jede Tabelle, die Sie einen modified haben möchten Spalte ein.