処理中にトリガーを明示的に無効にすることはお勧めしません。これにより、奇妙な副作用が発生する可能性があります。
トリガーのサイクルを検出(および防止)する最も信頼できる方法は、CONTEXT_INFO()
を使用することです。 。
例:
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
このリンク を参照してください。 より詳細な例については。
CONTEXT_INFO()
に関する注意 SQL Server 2000の場合:
コンテキスト情報はサポートされていますが、明らかにCONTEXT_INFO
機能はありません。代わりにこれを使用する必要があります:
SELECT @ctx = context_info
FROM master.dbo.sysprocesses
WHERE spid = @@SPID