Saya tidak menyarankan untuk menonaktifkan pemicu secara eksplisit selama pemrosesan - ini dapat menyebabkan efek samping yang aneh.
Cara paling andal untuk mendeteksi (dan mencegah) siklus dalam pemicu adalah dengan menggunakan CONTEXT_INFO()
.
Contoh:
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
Lihat tautan ini untuk contoh yang lebih detail.
Catatan di CONTEXT_INFO()
di SQL Server 2000:
Info konteks didukung tetapi ternyata CONTEXT_INFO
fungsi tidak. Anda harus menggunakan ini sebagai gantinya:
SELECT @ctx = context_info
FROM master.dbo.sysprocesses
WHERE spid = @@SPID