sp_check_for_sync_trigger (Transact-SQL)
適用対象:SQL ServerAzure SQL Managed Instance
ユーザー定義トリガーまたはストアド プロシージャが、即時更新サブスクリプションに使われるレプリケーション トリガーのコンテキストで呼び出されているかどうかを判別します。 このストアド プロシージャは、パブリッシャー側のパブリケーション データベースまたはサブスクリプション データベースのサブスクライバー側で実行されます。
構文
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 は ビットであり、既定値は 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 を返す場合、ユーザー定義トリガーは終了します。 これにより、レプリケーション トリガーがテーブルを更新するときに、ユーザー定義トリガーが起動しないようにします。
例
A. サブスクライバー テーブルのトリガーにコードを追加する
次の例は、サブスクライバー テーブルのトリガーで使用できるコードを示しています。
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
B. Publisher テーブルのトリガーにコードを追加する
このコードは、パブリッシャーのテーブルのトリガーに追加することもできます。コードは似ていますが、 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 権限を持つ任意のユーザーが実行できます。
参照
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示