Necesitaría algo como esto:un basado en conjuntos solución que tiene en cuenta que en un UPDATE
declaración, es posible que esté actualizando varias filas a la vez y, por lo tanto, su disparador también debe tratar con varias filas en el Inserted
y 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 supone que el TID
columna en el User_TB
la tabla es la clave principal que permanece igual durante las actualizaciones (para que pueda unir los valores "antiguos" de Deleted
pseudo tabla con los valores "nuevos" después de la actualización, almacenados en Inserted
pseudo tabla)