Je zou zoiets als dit nodig hebben - een set-based oplossing die daar rekening mee houdt in een UPDATE
verklaring, werkt u mogelijk meerdere rijen bij tegelijk, en daarom moet uw trigger ook omgaan met meerdere rijen in de Inserted
en Deleted
tabellen.
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
Deze code gaat ervan uit dat de TID
kolom in de User_TB
tabel is de primaire sleutel die hetzelfde blijft tijdens updates (zodat ik de "oude" waarden uit de Deleted
kan samenvoegen pseudo-tabel met de "nieuwe" waarden na de update, opgeslagen in de Inserted
pseudo-tabel)