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

opdatere trigger for at opdatere poster i en anden tabel

Du ville have brug for sådan noget - et sætbaseret løsning, der tager højde for det i en UPDATE sætning, opdaterer du muligvis flere rækker på én gang, og derfor skal din trigger også håndtere flere rækker i Inserted og 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

Denne kode antager at TID kolonnen i User_TB tabel er den primære nøgle som forbliver det samme under opdateringer (så jeg kan samle de "gamle" værdier fra Deleted pseudo-tabel med de "nye" værdier efter opdateringen, gemt i Inserted pseudo-tabel)




  1. Begrænsede PostgreSQL-tilladelser til webapp

  2. problem med apex_application_temp_files

  3. Hent url-parameter og indsæt i databasen

  4. ABS() Funktion i Oracle