【问题标题】:Accessing changes in Database while Transaction is Running在事务运行时访问数据库中的更改
【发布时间】:2011-03-17 18:38:09
【问题描述】:

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

这个线程会读取修改后的值吗?还是会按事务开始前的状态加载数据?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      IsolationLevel Enumeration

      Set Transaction Isolation Level (Transact-SQL)

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-19
        • 1970-01-01
        • 2017-05-26
        • 2010-10-23
        • 2016-09-19
        相关资源
        最近更新 更多