Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

trigger di aggiornamento per aggiornare i record in un'altra tabella

Avresti bisogno di qualcosa del genere:un basato su set soluzione che ne tenga conto in un UPDATE istruzione, potresti aggiornare più righe contemporaneamente, e quindi anche il tuo trigger deve gestire più righe in Inserted e Deleted tabelle.

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

Questo codice presuppone che il TID nella colonna User_TB table è la chiave primaria che rimane lo stesso durante gli aggiornamenti (in modo da poter unire i "vecchi" valori dal Deleted pseudo tabella con i "nuovi" valori dopo l'aggiornamento, memorizzati nel Inserted pseudotabella)