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

Benötigen Sie eine datetime-Spalte in SQL Server, die automatisch aktualisiert wird, wenn der Datensatz geändert wird

SQL Server hat keine Möglichkeit, einen Standardwert für UPDATE zu definieren .

Sie müssen also eine Spalte mit dem Standardwert zum Einfügen hinzufügen:

ADD modstamp DATETIME2 NULL DEFAULT GETDATE()

Und fügen Sie dieser Tabelle einen Trigger hinzu:

CREATE TRIGGER tgr_modstamp
ON **TABLENAME**
AFTER UPDATE AS
  UPDATE **TABLENAME**
  SET ModStamp = GETDATE()
  WHERE **ID** IN (SELECT DISTINCT **ID** FROM Inserted)

Und ja, Sie müssen für jeden Trigger eine Identitätsspalte angeben.

ACHTUNG:Seien Sie vorsichtig beim Einfügen von Spalten in Tabellen, in denen Sie den Code der Anwendung nicht kennen. Wenn Ihre App über den Befehl INSERT VALUES ohne Spaltendefinition verfügt, werden selbst bei Standardwerten für neue Spalten Fehler ausgegeben.