[英]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:StmtStarting
和SP:StmtCompleted
。 您將可以通過這種方式檢查觸發器的執行情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.