Ще ви трябва нещо подобно -на базата накомплект решение, което взема предвид това в UPDATE
израз, може да актуализирате няколко реда наведнъж и следователно вашият тригер също трябва да работи с множество редове в Inserted
и Deleted
таблици.
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
Този код предполага че TID
колона в User_TB
таблицата е първичният ключ което остава същото по време на актуализации (за да мога да обединя „старите“ стойности от Deleted
псевдо таблица с „новите“ стойности след актуализацията, съхранени в Inserted
псевдо таблица)