Au final, d'après la doc Oracle, la table T_CHILD est lockée si il n'y a pas d'index sur la clé étrangère au niveau de la table T_PARENT.
Mais concrétement, on n'arrive pas à "le prouver par l'exemple".
Moi, ma question est simple :
Si je fais mon update sur ma table T_PARENT, ma table T_CHILD doit être lockée. Donc dans une deuxième session, si j'essaie de faire un update sur ma table T_CHILD, elle est lockée.
Comment est-ce que je fais pour le vérifier ?
Parce que le cas du LOCK TABLE T_CHILD n'est pas convaincant.
Normalement, dans les préceptes d'Oracle, un verrou posé est relâché lors d'un commit ou d'un rollback ?!
Donc, si dans sa mécanique interne Oracle lock la table T_CHILD, tant que je n'ai pas commité, dans une autre session je ne peux pas agir sur la table T_CHILD...
Ci-dessous un résumé sur cette question :
Verrouillage et contraintes d'intégrité référentielle
- Verouiilage de la table mère
Dans tous les cas de figure, une mise à jour (INSERT ou UPDATE de la clé étrangère) de la table fille provoque la pose d'un verrou ROW SHARE (RS ou SS) sur la table mère.
- Verouiilage de la table fille
Une suppression d'une ligne ou une mise à jour de la clé primaire de la table mère provoque un verrouillage de la table fille
- Sans index sur la clé étrangère
Si aucune option n'a été spécifiée lors de la définition de la contrainte alors le verrou utilisé est SHARE (S).
Si l'une des options ON DELETE CASCADE ou ON DELETE SET NULL a été désignée alors le verrou utilisé est SHARE ROW EXCLUSIVE (SRX ou SSX).
- Un index est créé sur la clé étrangère
Un verrou ROW SHARE (RS ou SS) est posé sur la table fille lors d'une opération de mise à jour ou de suppression de lignes de la table mère. C'est le verrou le plus faible sur les tables.
C’est ce que tu penses mais pas ce qui est écrit dans la documentation
Cella veut dire que dans ce cas le verrou est relâché immédiatement après avoir été posé et non pas au moment du commit/rollback. C’est pour cella qu'on a utilisé le blocage : dans cette situation Oracle essai de poser le verrou mais parce que il n’abouti pas il reste bloqué. Et cella donne l’opportunité de le mettre en évidence. Relis avec attention tout ce qui a été écrit.…The SSX lock is released immediately after it is obtained…
Partager