W wyzwalaczu dostępne są dwie pseudotabele, Inserted
i Deleted
, które zawierają te wartości.
W przypadku UPDATE, Deleted
tabela będzie zawierać stare wartości, podczas gdy Inserted
tabela zawiera nowe wartości.
Więc jeśli chcesz rejestrować ID, OldValue, NewValue
w wyzwalaczu musisz napisać coś takiego:
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
Zasadniczo dołączasz do Inserted
i Deleted
pseudo-tabele, weź identyfikator (który jest taki sam, jak przypuszczam w obu przypadkach), starą wartość z Deleted
tabela, nowa wartość z Inserted
i przechowujesz wszystko w LogTable