Я ищу способ объяснить проблему взаимоблокировки. Я думаю, что знаю, что вызывает это, но я не уверен в точных событиях.
У нас длительный просмотр (несколько секунд). Мы обновляем одну из таблиц, которая используется в этом представлении. Обновления также могут занять несколько секунд. Операторы обновления, выполняющиеся при возникновении тупиковой ошибки, присоединяются к представлению. Например:
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
Я почти уверен, что возникла тупиковая ситуация, поскольку и представление, и оператор обновления зависят от Таблицы1. Возможен ли этот сценарий?
Спасибо