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

Kích hoạt chèn các giá trị cũ- giá trị đã được cập nhật

Trong trình kích hoạt của bạn, bạn có sẵn hai bảng giả, InsertedDeleted , chứa các giá trị đó.

Trong trường hợp CẬP NHẬT, Deleted bảng sẽ chứa các giá trị cũ, trong khi Inserted bảng chứa các giá trị mới.

Vì vậy, nếu bạn muốn ghi lại ID, OldValue, NewValue trong trình kích hoạt của bạn, bạn cần viết một cái gì đó như:

CREATE TRIGGER trgEmployeeUpdate
ON dbo.Employees AFTER UPDATE
AS 
   INSERT INTO dbo.LogTable(ID, OldValue, NewValue)
      SELECT i.ID, d.Name, i.Name
      FROM Inserted i
      INNER JOIN Deleted d ON i.ID = d.ID

Về cơ bản, bạn tham gia InsertedDeleted bảng giả, lấy ID (giống nhau, tôi cho là giống nhau, trong cả hai trường hợp), giá trị cũ từ Deleted bảng, giá trị mới từ Inserted và bạn lưu trữ mọi thứ trong LogTable



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Độ bền bị trễ trong SQL Server 2014

  2. Kiểm tra tình trạng máy chủ SQL chủ động, Phần 4:LỖI

  3. SQL Server Biểu thức chính quy trong T-SQL

  4. Hàm LEN không bao gồm dấu cách ở cuối trong SQL Server

  5. SQL Server DELETE - Xóa một hoặc nhiều hàng khỏi bảng với các tình huống hơi nâng cao