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

Tạo trình kích hoạt chèn các giá trị vào bảng mới khi một cột được cập nhật

Một cái gì đó như thế này sẽ làm những gì bạn cần. Bạn sẽ có INSERT câu lệnh bên dưới chèn các giá trị cho biết thao tác được thực hiện vào MyLogTable .

CREATE TRIGGER [dbo].[TRIG_MyTable]
ON [dbo].[MyTable]
AFTER INSERT, UPDATE

AS 

DECLARE @INS int, @DEL int

SELECT @INS = COUNT(*) FROM INSERTED
SELECT @DEL = COUNT(*) FROM DELETED

IF @INS > 0 AND @DEL > 0 
BEGIN

    -- a record got updated, so log accordingly.

    INSERT INTO MyLogTable
    SELECT 'New Values', getdate() FROM INSERTED

    INSERT INTO MyLogTable
    SELECT 'Old Values', getdate() FROM DELETED

END

ELSE 
BEGIN

    -- a new record was inserted.

    INSERT INTO MyLogTable
    SELECT 'Insert', getdate() FROM INSERTED

END

Nếu bạn muốn, bạn cũng có thể thêm các cột từ INSERTEDDELETED vào bảng nhật ký của bạn cũng như nếu bạn muốn nắm bắt các giá trị cột thực tế đã được chèn hoặc cập nhật.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để lặp qua tất cả các bảng SQL?

  2. Câu đố bế tắc:Nạn nhân không sở hữu bất kỳ tài nguyên nào, được sử dụng để giết để giải quyết bế tắc

  3. Truy xuất ID của bản ghi đã chèn:PHp &MS SQL SERVER

  4. Chuyển đổi cột Ngày giờ từ UTC sang giờ địa phương trong câu lệnh chọn

  5. Cách chỉ định vị trí của tệp dữ liệu và tệp nhật ký khi tạo cơ sở dữ liệu trong SQL Server