Sử dụng CONTEXT_INFO (Transact-SQL) . Trong quy trình, hãy đặt một giá trị để cảnh báo trình kích hoạt không ghi lại bất kỳ thứ gì:
--in the procedure doing the insert/update/delete
DECLARE @CONTEXT_INFO varbinary(128)
SET @CONTEXT_INFO =cast('SkipTrigger=Y'+REPLICATE(' ',128) as varbinary(128))
SET CONTEXT_INFO @CONTEXT_INFO
--do insert/update/delete that will fire the trigger
SET CONTEXT_INFO 0x0
Trong trình kích hoạt, hãy kiểm tra CONTEXT_INFO và xác định xem bạn có cần làm gì không:
--here is the portion of the trigger to retrieve the value:
IF CAST(CONTEXT_INFO() AS VARCHAR(128))='SkipTrigger=Y'
BEGIN
--log your data here
END
đối với bất kỳ ai chỉ thực hiện chèn / cập nhật / xóa giả mạo, họ sẽ không đặt CONTEXT_INFO và trình kích hoạt sẽ ghi lại thay đổi. Bạn có thể thích thú với giá trị bạn đặt vào CONTEXT_INFO, như tên bảng hoặc @@ SPID, v.v. nếu bạn cho rằng mã giả mạo cũng sẽ cố gắng sử dụng CONTEXT_INFO.