Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

cập nhật trình kích hoạt để cập nhật bản ghi trong bảng khác

Bạn sẽ cần một cái gì đó như thế này - một dựa trên bộ giải pháp có tính đến điều đó trong UPDATE tuyên bố, bạn có thể đang cập nhật nhiều hàng cùng một lúc, và do đó trình kích hoạt của bạn cũng phải xử lý nhiều hàng trong InsertedDeleted bảng.

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

Mã này giả định rằng TID trong User_TB bảng là khóa chính vẫn giữ nguyên trong quá trình cập nhật (để tôi có thể kết hợp các giá trị "cũ" với nhau từ Deleted bảng giả với các giá trị "mới" sau khi cập nhật, được lưu trữ trong Inserted bảng giả)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Trình kích hoạt SQL Server 2008

  2. Tập lệnh SQL Server 2008 để bỏ Ràng buộc PK có tên do hệ thống tạo

  3. Mã hóa chuỗi kết nối trong app.config

  4. Giới thiệu về Từ đồng nghĩa trong SQL Server

  5. Không thể tìm thấy thủ tục được lưu trữ 'dbo.aspnet_CheckSchemaVersion'