sp_check_for_sync_trigger (Transact-SQL)
適用於:SQL Server
Azure 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 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應