Nedoporučuji výslovně deaktivovat spouštěč během zpracování – může to způsobit podivné vedlejší účinky.
Nejspolehlivějším způsobem, jak zjistit (a zabránit) cyklům ve spouštěči, je použít CONTEXT_INFO()
.
Příklad:
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
Viz tento odkaz pro podrobnější příklad.
Poznámka k CONTEXT_INFO()
v SQL Server 2000:
Kontextové informace jsou podporovány, ale zjevně CONTEXT_INFO
funkce není. Místo toho musíte použít toto:
SELECT @ctx = context_info
FROM master.dbo.sysprocesses
WHERE spid = @@SPID