由于事务中的多个插入而导致的死锁

时间:2012-01-23 23:31:16

标签: sql-server deadlock

我有一个sp,它有这样的插入语句:

begin transaction

insert into table1
insert into table2
.
.
.
insert into table n

commit transaction

只要不同时调用sp,这一切都很好。但是,当同时调用sp时,我有时会在第一个表的主键上遇到死锁问题。

2 个答案:

答案 0 :(得分:1)

有一种可以解锁的mirriad方式。发布实际的死锁图(实际 xml,而不是dealock的图片!)。

如果你真的只有插入(没有读取),那么最可能的原因是外键约束。发布确切的模式定义(所有表定义,所有索引定义,所有约束,包括主键和外键)。顺便说一下,如果你定义了任何触发器,那么所有的赌注都会被关闭,因为死锁可能是由任意触发器代码引起的。

答案 1 :(得分:0)

您是否为db设置了一些可靠的隔离级别,例如ReadCommitted?