0

我有交易范围,我想:

using (var scope = new TransactionScope())
{
   1) Insert row into table1
   2) Select rows from table1  (incuding inserted row in step 1)
   3) Insert another row into table1 
   4) Select rows from table1 (incuding inserted row in step 1 and 3)
}

有没有机会在这些操作中出现 sql 死锁?我正在使用 Db 工作的实体框架。我不确定。

谢谢,

祝你今天过得愉快。

4

2 回答 2

1

这应该没有问题。

插入可能会锁定其他用户,甚至锁定您自己进行的其他事务,但它不会阻止您在同一个Sql 事务中执行任何操作。

于 2013-04-25T19:10:01.630 回答
0

是的,有可能发生死锁。

如果SQL Server选择将INSERT操作所需的锁升级到页级或表级并且会发生这种情况:

Transaction 1         Transaction 2
INSERT INTO page1
                      INSERT INTO page2
                      INSERT INTO page1
INSERT INTO page2

那么这两个事务将死锁,其中一个必须回滚。

于 2013-04-25T17:33:27.967 回答