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

SQLServerトリガーループ

    処理中にトリガーを明示的に無効にすることはお勧めしません。これにより、奇妙な副作用が発生する可能性があります。

    トリガーのサイクルを検出(および防止)する最も信頼できる方法は、CONTEXT_INFO()を使用することです。 。

    例:

    CREATE TRIGGER tr_Table1_Update
    ON Table1
    FOR UPDATE AS
    
    DECLARE @ctx VARBINARY(128) 
    SELECT @ctx = CONTEXT_INFO() 
    IF @ctx = 0xFF
        RETURN
    
    SET @ctx = 0xFF
    
    -- Trigger logic goes here
    

    このリンク を参照してください。 より詳細な例については。

    CONTEXT_INFO()に関する注意 SQL Server 2000の場合:

    コンテキスト情報はサポートされていますが、明らかにCONTEXT_INFO 機能はありません。代わりにこれを使用する必要があります:

    SELECT @ctx = context_info
    FROM master.dbo.sysprocesses
    WHERE spid = @@SPID
    


    1. データベースセキュリティのためのMariaDB監査プラグインの使用

    2. 複数のテーブルを結合するとNULL値が返されます

    3. MySQL Workbenchでテーブル作成スクリプトを取得するにはどうすればよいですか?

    4. Postgres接続を取得するためにHibernateが遅い