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

Trigger inserire vecchi valori-valori che sono stati aggiornati

Nel tuo trigger, hai due pseudo-tabelle disponibili, Inserted e Deleted , che contengono quei valori.

Nel caso di un AGGIORNAMENTO, il Deleted la tabella conterrà i vecchi valori, mentre Inserted la tabella contiene i nuovi valori.

Quindi, se vuoi registrare ID, OldValue, NewValue nel tuo trigger, dovresti scrivere qualcosa come:

CREATE TRIGGER trgEmployeeUpdate
ON dbo.Employees AFTER UPDATE
AS 
   INSERT INTO dbo.LogTable(ID, OldValue, NewValue)
      SELECT i.ID, d.Name, i.Name
      FROM Inserted i
      INNER JOIN Deleted d ON i.ID = d.ID

Fondamentalmente, ti unisci a Inserted e Deleted pseudo-tabelle, prendi l'ID (che è lo stesso, presumo, in entrambi i casi), il vecchio valore da Deleted tabella, il nuovo valore da Inserted tabella e memorizzi tutto nella LogTable