分享方式:


sp_check_for_sync_trigger (Transact-SQL)

適用於:SQL Server Azure SQL 受控執行個體

判斷在復寫觸發程式的內容中是否呼叫使用者定義觸發程式或預存程式,此觸發程式用於立即更新訂閱。 這個預存程式會在發行集資料庫的發行者端或訂閱資料庫的訂閱者端執行。

Transact-SQL 語法慣例

語法

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

引數

[ @tabid = ] tabid

正在檢查之數據表的物件標識碼,是否有立即更新觸發程式。 @tabid為 int,沒有預設值。

[ @trigger_op = ] 'trigger_op' OUTPUT

指定輸出參數是否要傳回其所呼叫的觸發程序類型。 @trigger_op是 char(10)類型的 OUTPUT 參數,可以是下列其中一個值。

Description
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回 ,則使用者定義的觸發程式會結束。 這可確保當復寫觸發程式更新數據表時,使用者定義觸發程式不會引發。

範例

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. 將程式代碼新增至發行者數據表上的觸發程式

程式代碼也可以新增至發行者數據表上的觸發程式;程式代碼很類似,但呼叫 包含 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;

權限

任何具有 SELECT sys.objects 系統檢視權限的使用者都可以執行 sp_check_for_sync_trigger