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'
    這是要檢查立即更新觸發程序之資料表的物件識別碼。 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

權限

任何具備 sys.objects 系統檢視中之 SELECT 權限的使用者,都可以執行 sp_check_for_sync_trigger 預存程序。

請參閱

概念

異動複寫的可更新訂閱