Bonjour,
J'ai lu pas mal de truc sur les transactions, les verrous, etc. J'ai à peu près bien assimilé la chose, je fais donc en ce moment pas mal de test pour confirmer ce que j'en ai compris.
Donc mon souci : je souhaiterai que lors de la lecture d'une ligne d'une table, celle ci soit bloquée en lecture/écriture. Pour l'écriture c'est facile, il suffit d'ajouter un "FOR UPDATE" à la fin de la requête, par contre pour la lecture... La raison est que j'ai un système d'arborecence à représentation intervallaire (ici pour les curieux), et je doit donc sélectionner le borne droite de l'élément père et ensuite faire les décalages pour inséré un fils. Mais durant ce temps on ne doit pas lire la valeur de cette borne (dans le cas où un autre utilisateur veut aussi ajouter un élément), il faut donc que je bloque la lecture jusqu'à ce que le fils soit ajouté correctement.
J'ai pensé à "LOCK TABLES", mais l'inconvénient c'est que cela bloque toute la table (alors que la lecture de certaines infos peuvent se faire), et que d'après ce que j'ai lu dans la doc, ce n'est pas compatible avec les transactions, car ça les valide automatiquement.
Je pense faire un UPDATE en utilisant une "jointure" si il n'y a aucune autre solution.
Merci d'avance.
Partager