sp_check_for_sync_trigger (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_trigger で 0 が返された場合、ユーザー定義トリガは処理を続行します。sp_check_for_sync_trigger で 1 が返された場合、ユーザー定義トリガは終了します。ユーザー定義トリガは、レプリケーション トリガがテーブルを更新するときには起動されません。
使用例
次の例は、サブスクライバ テーブルのトリガで使用できるコードを示しています。
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