Tôi không khuyên bạn nên tắt trình kích hoạt một cách rõ ràng trong quá trình xử lý - điều này có thể gây ra các tác dụng phụ lạ.
Cách đáng tin cậy nhất để phát hiện (và ngăn chặn) các chu kỳ trong trình kích hoạt là sử dụng CONTEXT_INFO()
.
Ví dụ:
CREATE TRIGGER tr_Table1_Update
ON Table1
FOR UPDATE AS
DECLARE @ctx VARBINARY(128)
SELECT @ctx = CONTEXT_INFO()
IF @ctx = 0xFF
RETURN
SET @ctx = 0xFF
-- Trigger logic goes here
Xem liên kết này để có một ví dụ chi tiết hơn.
Ghi chú về CONTEXT_INFO()
trong SQL Server 2000:
Thông tin ngữ cảnh được hỗ trợ nhưng rõ ràng là CONTEXT_INFO
chức năng không. Bạn phải sử dụng cái này để thay thế:
SELECT @ctx = context_info
FROM master.dbo.sysprocesses
WHERE spid = @@SPID