sql >> Database >  >> RDS >> Sqlserver

update trigger om records in een andere tabel bij te werken

Je zou zoiets als dit nodig hebben - een set-based oplossing die daar rekening mee houdt in een UPDATE verklaring, werkt u mogelijk meerdere rijen bij tegelijk, en daarom moet uw trigger ook omgaan met meerdere rijen in de Inserted en Deleted tabellen.

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

Deze code gaat ervan uit dat de TID kolom in de User_TB tabel is de primaire sleutel die hetzelfde blijft tijdens updates (zodat ik de "oude" waarden uit de Deleted kan samenvoegen pseudo-tabel met de "nieuwe" waarden na de update, opgeslagen in de Inserted pseudo-tabel)




  1. ActiveRecord::StatementInvalid, PG::UndefinedTable-fout, maar gegenereerde SQL werkt

  2. Heeft het JDBC Postgres-stuurprogramma een manier om de client_encoding in te stellen om verbinding te maken met de database?

  3. mysql-configuratie stopt bij het starten van de server

  4. Hoe kan ik detecteren of een tabel bestaat? MijnSql