Ik raad niet aan om de trigger expliciet uit te schakelen tijdens de verwerking - dit kan vreemde bijwerkingen veroorzaken.
De meest betrouwbare manier om cycli in een trigger te detecteren (en te voorkomen) is door CONTEXT_INFO()
te gebruiken .
Voorbeeld:
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
Zie deze link voor een meer gedetailleerd voorbeeld.
Opmerking over CONTEXT_INFO()
in SQL Server 2000:
Contextinformatie wordt ondersteund, maar blijkbaar is de CONTEXT_INFO
functie niet. Je moet dit in plaats daarvan gebruiken:
SELECT @ctx = context_info
FROM master.dbo.sysprocesses
WHERE spid = @@SPID