Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

C'è un modo per disabilitare un trigger di SQL Server solo per un particolare ambito di esecuzione?

Ho appena visto questo articolo recentemente evidenziato nella newsletter di SQL Server Central e sembra offrire un modo che potresti trovare utile utilizzando Context_Info sulla connessione:

http://www.mssqltips.com/tip.asp?tip=1591

EDIT di Terrapin:

Il link sopra include il seguente codice:

USE AdventureWorks;  
GO  
-- creating the table in AdventureWorks database  
IF OBJECT_ID('dbo.Table1') IS NOT NULL  
DROP TABLE dbo.Table1  
GO  
CREATE TABLE dbo.Table1(ID INT)  
GO   
-- Creating a trigger  
CREATE TRIGGER TR_Test ON dbo.Table1 FOR INSERT,UPDATE,DELETE  
AS  
DECLARE @Cinfo VARBINARY(128)  
SELECT @Cinfo = Context_Info()  
IF @Cinfo = 0x55555  
RETURN  
PRINT 'Trigger Executed'  
-- Actual code goes here  
-- For simplicity, I did not include any code  
GO  

Se vuoi impedire l'esecuzione del trigger, puoi procedere come segue:

SET Context_Info 0x55555 
INSERT dbo.Table1 VALUES(100)