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

Er der en måde at deaktivere en SQL Server-trigger for kun et bestemt eksekveringsomfang?

Jeg har lige set denne artikel fremhævet for nylig i SQL Server Central-nyhedsbrevet, og den ser ud til at tilbyde en måde, som du kan finde nyttig ved at bruge Context_Info om forbindelsen:

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

EDIT af Terrapin:

Ovenstående link indeholder følgende kode:

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  

Hvis du vil forhindre triggeren i at blive udført, kan du gøre følgende:

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


  1. Oracle instant client:ORA-28759:fil kan ikke åbnes

  2. Tips til lagring af dine TimescaleDB-sikkerhedskopier i skyen

  3. Hvordan opretter man bruger til en db i postgresql?

  4. Oracle SQL-uoverensstemmelse:COUNT(*) vs. faktisk resultatsæt