Je cherche un moyen d'expliquer un problème d'interblocage. Je pense que je sais ce qui le cause, mais je ne suis pas sûr des événements exacts.Les instructions SQL suivantes seraient-elles la cause d'un blocage?
Nous avons une vue longue durée (plusieurs secondes). Nous mettons à jour l'une des tables utilisées dans cette vue. Les mises à jour peuvent également prendre plusieurs secondes. Les instructions de mise à jour qui s'exécutent lorsque l'erreur de blocage est lancée se joignent à la vue. Par exemple:
UPDATE t1 SET
Field1 = 'someValue'
FROM Table1 t1
JOIN TheView v ON v.TableId = t1.TableId
WHERE v.Condition = 'TheCondition'
La déclaration qui semble se fermer en raison de l'impasse est comme:
SELECT * FROM TheView
Lorsque la vue est définie comme:
CREATE VIEW TheView AS
SELECT *
FROM Table1 t1
JOIN Table2 t2 ON t2.foo = t1.foo
Je suis assez sûr que le blocage se produit parce que la vue et l'instruction de mise à jour dépendent de Table1. Ce scénario est-il possible?
Merci