Bonjour à tous.
Je lis sur la doc officielle de MySQL ceci :
Supposons que j'ai une table T_1 qui référence au moyen d'une FK une table T_2.If a FOREIGN KEY constraint is defined on a table, any insert, update, or delete that requires the constraint condition to be checked sets shared record-level locks on the records that it looks at to check the constraint. InnoDB also sets these locks in the case where the constraint fails.
Si je comprend bien la note, si je fais un update sur la table T_1, un shared-lock doit être posé sur la ligne référencée dans la table T_2.
Pourtant, dans mon cas, si j'agis comme ceci :
Avec T2_ID qui représente la FK de T_1 vers T_2.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Start Transaction UPDATE T_1 SET T_ATTR = 'toto' WHERE T2_ID = 1;
Je n'ai pas encore commité cette 1ère transaction, et j'en commence une autre :
Là, je ne suis pas en attente, et la requête passe !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Start Transaction UPDATE T_2 SET T_ATTR = 'tutu' WHERE T2_ID = 1;
Est-ce normal? Ai-je raté un truc dans l'explication???
Je précise MySQL 5.0 avec des tables InnoDB, Transaction Level par défaut (REPEATBLE_READ sous InnoDB il me semble).
Bref, je suis un peu dans le flou.
J'ai du rater qq chose, mais pour le moment je ne vois pas quoi, si des personnes ont des remarques ou des indications, elles seront les bienvenues
Partager