2011-03-17 87 views
0

我正在開發與數據庫交互的.NET應用程序。在一個方法中,我開始一個SQL事務並修改table1中的一些值,在完成更改(但仍未提交事務)後,我啓動Threading.Thread以使用table1中的數據更新table2中的值。在事務運行時訪問數據庫中的更改

此線程會讀取修改後的值嗎?或者它會像交易開始之前那樣加載數據?

回答

2

這取決於第二個線程是否使用與事務啓動相同的連接/會話。如果是,那麼它可以看到在該交易期間迄今爲止所做的更改。如果它是一個不同的連接,那麼這些更改將視而不見,直到他們承諾。

2

使用RepeatableReadReadUncommitted第二個線程中事務的事務隔離級別允許您從table1中讀取未提交的數據。在事務隔離級別

更多信息:

IsolationLevel Enumeration

Set Transaction Isolation Level (Transact-SQL)

不同的是,你將如何確保數據正在讀取和更新表2之前寫入表1的問題,但是這取決於在你的.NET應用程序實現上。

相關問題