Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Има ли начин да деактивирате тригер на SQL Server само за определен обхват на изпълнение?

Току-що видях тази статия наскоро подчертана в бюлетина на SQL Server Central и изглежда, че предлага начин, който може да ви бъде полезен, като използвате Context_Info във връзката:

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

РЕДАКТИРАНЕ от Terrapin:

Горната връзка включва следния код:

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  

Ако искате да предотвратите изпълнението на тригера, можете да направите следното:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Установяване на връзката от Script Task(VB) към OLEDB Connection Manager на SSIS Package

  2. Архивиране/възстановяване на SQL Server срещу отделяне/прикачване

  3. Как да заявите xml колона в tsql

  4. Групово вмъкване с квалификатор на текст в SQL Server

  5. как мога да получа част от десетичната запетая в sql