Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Czy istnieje sposób na wyłączenie wyzwalacza programu SQL Server tylko dla określonego zakresu wykonania?

Właśnie widziałem ten artykuł niedawno wyróżniony w biuletynie SQL Server Central i wydaje się, że oferuje sposób, który może okazać się przydatny przy użyciu Context_Info na połączeniu:

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

EDYTUJ przez Terrapin:

Powyższy link zawiera następujący 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  

Jeśli chcesz uniemożliwić wykonanie wyzwalacza, możesz wykonać następujące czynności:

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. Zmiana właściciela stołu

  2. Używanie INSERT INTO z SQL Server do zmiany danych Salesforce

  3. Złożony klucz podstawowy a kolumna dodatkowego identyfikatora?

  4. Przekaż tabelę jako parametr do SQLCLR TV-UDF

  5. Zaktualizuj zapytanie o skorelowane podzapytanie