sql >> Databasteknik >  >> RDS >> Sqlserver

uppdatera trigger för att uppdatera poster i en annan tabell

Du skulle behöva något liknande - en uppsättningsbaserad lösning som tar hänsyn till det i en UPDATE uttalande, kanske du uppdaterar flera rader på en gång, och därför måste din utlösare också hantera flera rader i Inserted och 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

Den här koden förutsätter att TID kolumnen i User_TB tabellen är den primära nyckeln som förblir detsamma under uppdateringar (så att jag kan sammanfoga de "gamla" värdena från Deleted pseudotabell med de "nya" värdena efter uppdateringen, lagrad i Inserted pseudotabell)




  1. SQL ORDER BY med CASE med UNION ALL

  2. Python 3.2-skript för att ansluta till lokal MySQL-databas

  3. Hämta poster där json-kolumnnyckeln är null

  4. Hur lägger jag en 'if-sats' i en SQL-sträng?