簡體   English   中英

如何確保在Transaction.commit之后完成SQL觸發器?

[英]How to make sure the SQL trigger complete after the Transaction.commit?

這是我們的情況...

我們有一個事務來更新SQL Server數據庫,我們在數據庫中也有一些sql觸發器來做一些相應的工作(更新表,添加一些數據,等等)。

事務提交后,我們需要讀取從觸發器更新的數據。...代碼如下所示...

using (var tm = UpdateTransaction.Begin(...))
                            {
                                UpdateDatabase();
                                tm.Commit();
                            }
                            string val = GetData();

但是,我們發現,有時GetData()無法返回正確的結果。 我們懷疑當時觸發尚未完成...

所以...如何處理此問題,能否給我們一些建議。

提前非常感謝您...

您可以通過以下方式檢查觸發器的狀態(如果已啟用或禁用):

SELECT
OBJECT_NAME(PARENT_OBJ) TABLE_NAME,
NAME AS TRIGGER_NAME,
CASE OBJECTPROPERTY(ID, 'EXECISTRIGGERDISABLED')
WHEN 0 THEN 'ENABLED'
ELSE 'DISABLED'
END AS STATUS
FROM SYSOBJECTS
WHERE XTYPE = 'TR'

關於如何檢查觸發器是否完成,一種方法是檢查觸發器中涉及的表,這意味着相關表/記錄是否已相應更新。

我認為最好的另一種方法是使用SQL Server Profiler檢查觸發器的執行情況。 執行SQL Server Profiler,在事件選擇部分中,啟用選項“顯示所有事件”,並確保已選中存儲過程SP:StmtStartingSP:StmtCompleted 您將可以通過這種方式檢查觸發器的執行情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM