sql >> Database >  >> RDS >> Sqlserver

Is er een manier om een ​​SQL Server-trigger uit te schakelen voor slechts een bepaald uitvoeringsbereik?

Ik zag dit artikel onlangs gemarkeerd in de SQL Server Central-nieuwsbrief en het lijkt een manier te bieden die u misschien handig vindt met behulp van de Context_Info over de verbinding:

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

BEWERKEN door Terrapin:

De bovenstaande link bevat de volgende code:

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  

Als u wilt voorkomen dat de trigger wordt uitgevoerd, kunt u het volgende doen:

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


  1. Ongewenste nieuwe regels bij het spoolen van een sqlplus-resultaat naar een xml-bestand

  2. Waarom hapert mysqli_query()? [mysqli_query():Kon mysqli niet ophalen]

  3. mysqldump doet een gedeeltelijke back-up - onvolledige tabeldump

  4. Databaseversleuteling:waarom en waar u gegevensversleuteling nodig heeft