在事务运行时访问数据库中的更改

时间:2011-03-17 18:38:09

标签: .net sql sql-server transactions .net-1.1

我正在开发一个与数据库交互的.NET应用程序。在一个方法中,我开始一个SQL事务并修改table1中的一些值,在我完成更改后(但仍未提交事务)我启动Threading.Thread以更新值table2使用table1中的数据。

这个线程会读取修改后的值吗?或者它会在交易开始之前加载数据吗?

2 个答案:

答案 0 :(得分:2)

这取决于第二个线程是否使用了启动事务的相同连接/会话。如果是,那么它可以看到在该交易期间到目前为止所做的更改。如果它是一个不同的连接,那么在提交之前它们将对这些更改视而不见。

答案 1 :(得分:2)

在第二个线程中使用事务的RepeatableReadReadUncommitted事务隔离级别将允许您从table1读取未提交的数据。

有关事务隔离级别的更多信息:

IsolationLevel Enumeration

Set Transaction Isolation Level (Transact-SQL)

在读取和更新table2之前,如何确保将数据写入table1的问题不同,这取决于您的.NET应用程序实现。