sql >> データベース >  >> RDS >> Sqlserver

特定の実行範囲でSQLServerトリガーを無効にする方法はありますか?

    この記事がSQLServerCentralニュースレターで最近強調表示されているのを見たところ、接続で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. OracleAPEXへのCASの実装

    2. 別のテーブルからランダムデータを入力します

    3. table_exists()メソッドが正しく機能していない可能性があります

    4. SQLServerのDateTime列をDateTimeOffsetに移行します