我有交易范围,我想:
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工作的实体框架。我不确定这一点。
谢谢,
度过愉快的一天。
答案 0 :(得分:1)
这应该没有问题。
插入可能会锁定其他用户,甚至锁定您自己制作的其他事务,但它不会阻止您在相同 Sql事务中执行任何操作。
答案 1 :(得分:0)
是的,发生僵局是可能的。
如果SQL Server
选择将INSERT
操作所需的锁升级到页面或表级别,则会发生以下情况:
Transaction 1 Transaction 2
INSERT INTO page1
INSERT INTO page2
INSERT INTO page1
INSERT INTO page2
然后这两个事务将死锁,其中一个必须回滚。