sp_check_for_sync_trigger (Transact-SQL)
適用於:SQL ServerAzure 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), 可以是下列其中一個值。
值 | Description |
---|---|
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. 將程式碼新增至發行者資料表上的觸發程式
程式碼也可以新增至發行者資料表上的觸發程式;程式碼很類似,但對 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 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應