2011-03-17 44 views
0

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

此线程会读取修改后的值吗?或者它会像交易开始之前那样加载数据?

回答

2

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

2

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

更多信息:

IsolationLevel Enumeration

Set Transaction Isolation Level (Transact-SQL)

不同的是,你将如何确保数据正在读取和更新表2之前写入表1的问题,但是这取决于在你的.NET应用程序实现上。

相关问题