sp_check_for_sync_trigger (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,使用者自訂觸發程序就會結束。這可以確定當複寫觸發程序更新資料表時,不會引發使用者自訂觸發程序。
權限
任何具備 sys.objects 系統檢視中之 SELECT 權限的使用者,都可以執行 sp_check_for_sync_trigger 預存程序。
範例
下列範例會顯示可用於訂閱者資料表之觸發程序中的程式碼。
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