Не препоръчвам изрично да деактивирате тригера по време на обработка - това може да причини странни странични ефекти.
Най-надеждният начин за откриване (и предотвратяване) на цикли в задействане е да използвате 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