Potřebovali byste něco takového – založené řešení, které to bere v úvahu v UPDATE
je možné, že aktualizujete více řádků najednou, a proto se váš spouštěč také musí zabývat více řádky v Inserted
a Deleted
tabulky.
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
Tento kód předpokládá že TID
ve sloupci User_TB
tabulka je primární klíč který zůstává stejný během aktualizací (abych mohl spojit "staré" hodnoty z Deleted
pseudo tabulka s "novými" hodnotami po aktualizaci, uložená v Inserted
pseudo tabulka)