Você precisaria de algo assim - um baseado em conjunto solução que leva em conta que em um
UPDATE
declaração, você pode estar atualizando várias linhas de uma só vez e, portanto, seu gatilho também deve lidar com várias linhas no Inserted
e Deleted
mesas. 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
Este código supõe que o
TID
coluna no User_TB
table é a chave primária que permanece o mesmo durante as atualizações (para que eu possa juntar os valores "antigos" do Deleted
pseudo tabela com os "novos" valores após a atualização, armazenados no Inserted
pseudotabela)