Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

тригер за актуализиране за актуализиране на записи в друга таблица

Ще ви трябва нещо подобно -на базата накомплект решение, което взема предвид това в UPDATE израз, може да актуализирате няколко реда наведнъж и следователно вашият тригер също трябва да работи с множество редове в Inserted и Deleted таблици.

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

Този код предполага че TID колона в User_TB таблицата е първичният ключ което остава същото по време на актуализации (за да мога да обединя „старите“ стойности от Deleted псевдо таблица с „новите“ стойности след актуализацията, съхранени в Inserted псевдо таблица)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Запитване до различна таблица въз основа на параметър

  2. Оптимистичен едновременност:IsConcurrencyToken и RowVersion

  3. Как мога да направя контрол на версиите на схемата на базата данни?

  4. Замяна на знаци в низ въз основа на редове в таблица sql

  5. Премахнете странните знаци ( A с шапка) от колоната varchar на SQL Server