我正在寻找解决死锁问题的方法。我想我知道是什么原因造成的,但我不确定确切的事件。以下SQL语句是否会导致死锁?
我们有一个长期运行的观点(几秒钟)。我们正在更新在该视图中使用的其中一个表格。更新也可能需要几秒钟的时间。当引发死锁错误时正在运行的更新语句连接到视图。例如:
UPDATE t1 SET
Field1 = 'someValue'
FROM Table1 t1
JOIN TheView v ON v.TableId = t1.TableId
WHERE v.Condition = 'TheCondition'
似乎已得到关闭的原因僵局的说法是这样的:
SELECT * FROM TheView
,其视图被定义为:
CREATE VIEW TheView AS
SELECT *
FROM Table1 t1
JOIN Table2 t2 ON t2.foo = t1.foo
我相当肯定会发生死锁,因为视图和更新语句都依赖于Table1。这种情况可能吗?
谢谢