Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Apakah ada cara untuk menonaktifkan pemicu SQL Server hanya untuk lingkup eksekusi tertentu?

Saya baru saja melihat artikel ini baru-baru ini disorot di buletin SQL Server Central dan tampaknya menawarkan cara yang mungkin berguna bagi Anda menggunakan Context_Info pada sambungan:

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

EDIT oleh Terrapin:

Tautan di atas menyertakan kode berikut:

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  

Jika Anda ingin mencegah pemicu dieksekusi, Anda dapat melakukan hal berikut:

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. Konversi 'datetime' menjadi 'date' di SQL Server (Contoh T-SQL)

  2. Dapatkan Kolom yang Mendasari Tampilan Berdasarkan Kumpulan Hasil-nya

  3. 3 Cara Mengembalikan Semua Tabel TANPA Kunci Utama di SQL Server

  4. Bagaimana cara menambahkan Failover Partner ke string koneksi di VB.NET

  5. Cara Bergabung ke baris pertama