提交嵌套事务时会释放页面锁定吗



众所周知,事务内部的数据库锁在该事务结束时释放。所以,在这个代码中。。

public static TransactionScope CreateTransactionScope()
{
    return new TransactionScope(TransactionScopeOption.Required,
     new TransactionOptions() { IsolationLevel = IsolationLevel.ReadCommitted });
}

事实上,在这个。。。

using (DataContext dataContext = new DataContext())
using (TransactionScope rootScope = CreateTransactionScope())
{
    using (TransactionScope nested = CreateTransactionScope())
    {
        Ticket ticket = dataContext.ExecuteQuery<Ticket>(
          "SELECT * FROM Tickets WITH (UPDLOCK) WHERE id={0}", ticketId).First();
        nested.Complete();
    }
    // Will the lock be still ON here? Because I don't need him to be!
}

在处理嵌套事务或根事务之后,行/页锁(UPDLLOCK)将在什么时候释放?

只有在根作用域退出using块并进行处理后,它才会被释放。

学习这种东西最好的方法就是把手弄脏。

用表a和表B创建一个简单的数据库,每个数据库都包含一列,将其命名为"TimeStamp",并创建一个插入时间戳(或任何类型的值)的简单控制台应用程序,您可以使用事务选项并了解行为。

相关内容

  • 没有找到相关文章

最新更新