Du skulle behöva något liknande - en uppsättningsbaserad lösning som tar hänsyn till det i en UPDATE
uttalande, kanske du uppdaterar flera rader på en gång, och därför måste din utlösare också hantera flera rader i Inserted
och Deleted
tabeller.
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
Den här koden förutsätter att TID
kolumnen i User_TB
tabellen är den primära nyckeln som förblir detsamma under uppdateringar (så att jag kan sammanfoga de "gamla" värdena från Deleted
pseudotabell med de "nya" värdena efter uppdateringen, lagrad i Inserted
pseudotabell)