【发布时间】:2011-05-05 13:46:15
【问题描述】:
使用 SQL Server 2005:我有一个具有自引用外键的表。
当此表上的更新和插入同时发生但仅在以下情况下会发生死锁:
- 第一次更新
- 更新是针对插入语句的外键引用的记录
在更新期间,会在主键上创建 X 锁,主键是表的聚集索引。我已经尝试了几种方法来尝试防止这种情况发生,例如:
- 我已尝试更改事务隔离级别
- 提供表格提示,即 WITH(nolock)
- 我尝试在表的主键上创建一个非聚集索引,以便可以使用它来代替聚集索引。
外键需要在那里,所以删除它不是一个选项。关于如何防止阻止插入的锁或允许插入围绕锁工作的任何建议都会非常有帮助。
谢谢。
【问题讨论】:
-
您是否遇到了死锁(其中一个事务因错误
1205而失败)或锁等待?
标签: sql locking foreign-keys deadlock indexing