Bạn sẽ cần một cái gì đó như thế này - một dựa trên bộ giải pháp có tính đến điều đó trong UPDATE
tuyên bố, bạn có thể đang cập nhật nhiều hàng cùng một lúc, và do đó trình kích hoạt của bạn cũng phải xử lý nhiều hàng trong Inserted
và Deleted
bảng.
CREATE TRIGGER [dbo].[updateUserId]
ON [dbo].[User_TB]
FOR UPDATE
AS
-- update the "Break" table - find the rows based on the *old* User_Id
-- from the "Deleted" pseudo table, and set it to the *new* User_Id
-- from the "Inserted" pseudo table
SET User_Id = i.User_Id
FROM Inserted i
INNER JOIN Deleted d ON i.TID = d.TID
WHERE
Break_TB.User_Id = d.User_Id
-- update the "Log" table - find the rows based on the *old* User_Id
-- from the "Deleted" pseudo table, and set it to the *new* User_Id
-- from the "Inserted" pseudo table
UPDATE Break_TB
SET User_Id = i.User_Id
FROM Inserted i
INNER JOIN Deleted d ON i.TID = d.TID
WHERE
Break_TB.User_Id = d.User_Id
Mã này giả định rằng TID
trong User_TB
bảng là khóa chính vẫn giữ nguyên trong quá trình cập nhật (để tôi có thể kết hợp các giá trị "cũ" với nhau từ Deleted
bảng giả với các giá trị "mới" sau khi cập nhật, được lưu trữ trong Inserted
bảng giả)