Non consiglio di disabilitare esplicitamente il trigger durante l'elaborazione:ciò può causare strani effetti collaterali.
Il modo più affidabile per rilevare (e prevenire) i cicli in un trigger è utilizzare CONTEXT_INFO()
.
Esempio:
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
Vedi questo link per un esempio più dettagliato.
Nota su CONTEXT_INFO()
in SQL Server 2000:
Le informazioni sul contesto sono supportate ma apparentemente il CONTEXT_INFO
la funzione non lo è. Devi usare questo invece:
SELECT @ctx = context_info
FROM master.dbo.sysprocesses
WHERE spid = @@SPID