sql >> Databasteknik >  >> RDS >> Sqlserver

Finns det något sätt att inaktivera en SQL Server-utlösare för bara ett visst exekveringsomfång?

Jag såg precis den här artikeln framhävd i SQL Server Centrals nyhetsbrev och den verkar erbjuda ett sätt som du kan ha nytta av med hjälp av Context_Info om anslutningen:

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

EDIT av Terrapin:

Länken ovan innehåller följande kod:

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  

Om du vill förhindra att triggern exekveras kan du göra följande:

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


  1. Hitta datakällan för en viss tabell - ORACLE

  2. städer och avstånd efter latitud-longitud

  3. kan soundex användas på en del av en kolumn i mysql?

  4. Jämför prestanda för Windows Azure VM, del 2