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

È necessaria una colonna datetime in SQL Server che si aggiorni automaticamente quando il record viene modificato

SQL Server non ha un modo per definire un valore predefinito per UPDATE .

Quindi è necessario aggiungere una colonna con valore predefinito per l'inserimento:

ADD modstamp DATETIME2 NULL DEFAULT GETDATE()

E aggiungi un trigger su quel tavolo:

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

E sì, devi specificare una colonna di identità per ogni trigger.

ATTENZIONE:fare attenzione quando si inseriscono colonne su tabelle di cui non si conosce il codice dell'applicazione. Se la tua app ha il comando INSERT VALUES senza definizione di colonna, genererà errori anche con il valore predefinito sulle nuove colonne.