sp_check_for_sync_trigger (Transact-SQL)

ユーザー定義トリガーまたはストアド プロシージャが、即時更新サブスクリプションに使われるレプリケーション トリガーのコンテキストで呼び出されているかどうかを判別します。 このストアド プロシージャは、パブリッシャー側でパブリケーション データベースについて、または、サブスクライバー側でサブスクリプション データベースについて実行されます。

トピック リンク アイコン Transact-SQL 構文表記規則

構文

sp_check_for_sync_trigger [ @tabid = ] 'tabid' 
    [ , [ @trigger_op = ] 'trigger_output_parameters' OUTPUT ]
    [ , [ @fonpublisher = ] fonpublisher ]

引数

  • [@tabid = ] 'tabid'
    即時更新トリガーに対してチェックされるテーブルのオブジェクト ID です。 tabid のデータ型は int で、既定値はありません。

  • [@trigger_op = ] 'trigger_output_parameters' OUTPUT
    出力パラメーターが呼び出し元のトリガーの種類を返すかどうかを指定します。 trigger_output_parameters のデータ型は char(10) で、次のいずれかの値を指定できます。

    説明

    Ins

    INSERT トリガーです。

    Upd

    UPDATE トリガーです。

    Del

    DELETE トリガーです。

    NULL (既定値)

  • [ @fonpublisher = ] fonpublisher
    ストアド プロシージャの実行場所を指定します。 fonpublisher のデータ型は bit で、既定値は 0 です。 0 の場合はサブスクライバー側、1 の場合はパブリッシャー側で実行します。

戻り値

0 の場合、ストアド プロシージャが即時更新トリガーのコンテキスト内で呼び出されていないことを示します。 1 の場合、ストアド プロシージャが即時更新トリガーのコンテキスト内で呼び出されており、@trigger_op で返される種類のトリガーであることを示します。

説明

sp_check_for_sync_trigger は、スナップショット レプリケーションおよびトランザクション レプリケーションで使用します。

sp_check_for_sync_trigger は、レプリケーション トリガーとユーザー定義トリガー間を調整するのに使用します。 このストアド プロシージャは、レプリケーション トリガーのコンテキスト内で呼び出されているかどうかを判別します。 たとえば、ユーザー定義トリガーの内部でプロシージャ sp_check_for_sync_trigger を呼び出すことができます。 sp_check_for_sync_trigger0 が返された場合、ユーザー定義トリガーは処理を続行します。 sp_check_for_sync_trigger1 が返された場合、ユーザー定義トリガーは終了します。 ユーザー定義トリガーは、レプリケーション トリガーがテーブルを更新するときには起動されません。

使用例

次の例は、サブスクライバー テーブルのトリガーで使用できるコードを示しています。

DECLARE @retcode int, @trigger_op char(10), @table_id int
SELECT @table_id = object_id('tablename')
EXEC @retcode = sp_check_for_sync_trigger @table_id, @trigger_op OUTPUT
IF @retcode = 1
RETURN

このコードは、パブリッシャーのテーブルのトリガーに追加することもできます。コードは似ていますが、sp_check_for_sync_trigger への呼び出しには追加のパラメーターが含まれています。

DECLARE @retcode int, @trigger_op char(10), @table_id int, @fonpublisher int
SELECT @table_id = object_id('tablename')
SELECT @fonpublisher = 1
EXEC @retcode = sp_check_for_sync_trigger @table_id, @trigger_op OUTPUT, @fonpublisher
IF @retcode = 1
RETURN

権限

sp_check_for_sync_trigger ストアド プロシージャは、sys.objects システム ビューで SELECT 権限を持っているどのユーザーでも実行できます。

関連項目

概念

トランザクション レプリケーションの更新可能なサブスクリプション