Ve vašem spouštěči máte k dispozici dvě pseudotabulky, Inserted
a Deleted
, které tyto hodnoty obsahují.
V případě UPDATE Deleted
tabulka bude obsahovat staré hodnoty, zatímco Inserted
tabulka obsahuje nové hodnoty.
Pokud tedy chcete zaznamenat ID, OldValue, NewValue
ve vašem triggeru byste museli napsat něco jako:
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
V podstatě se připojíte k Inserted
a Deleted
pseudo-tabulky, vezměte ID (které je, předpokládám, v obou případech stejné), starou hodnotu z Deleted
tabulka, nová hodnota z Inserted
a vše uložíte do LogTable