Trong trình kích hoạt của bạn, bạn có sẵn hai bảng giả, Inserted
và Deleted
, chứa các giá trị đó.
Trong trường hợp CẬP NHẬT, Deleted
bảng sẽ chứa các giá trị cũ, trong khi Inserted
bảng chứa các giá trị mới.
Vì vậy, nếu bạn muốn ghi lại ID, OldValue, NewValue
trong trình kích hoạt của bạn, bạn cần viết một cái gì đó như:
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ề cơ bản, bạn tham gia Inserted
và Deleted
bảng giả, lấy ID (giống nhau, tôi cho là giống nhau, trong cả hai trường hợp), giá trị cũ từ Deleted
bảng, giá trị mới từ Inserted
và bạn lưu trữ mọi thứ trong LogTable