Bonjour à tous,
J'ai une table dans laquelle je dois m'assurer que chaque enregistrement est sélectionné/supprimé seulement par un process PHP.
Pour m'assurer que deux processus ne vont pas lire et extraire le même résultat, je vérouille la table de cette façon: "LOCK TABLE tableA WRITE"
Mais, cela ne fonctionne pas du tout car deux processus arrivent à extraire le même enregistrement au même moment.
Dans l'exemple ci-bas, pouvez-vous m'expliquer pourquoi j'arrive à lire les données de la table tableA avec une seconde connexion lorsque je viens tout juste de la vérouiller avec la première connexion?
mysql_query("LOCK TABLE tableA WRITE", $conn_1);
mysql_query("SELECT * FROM tableA", $conn_2);
mysql_query("UNLOCK TABLES", $conn_1);
J'ai aussi essayé avec GET_LOCK() et RELEASE_LOCK(). Mais même si je fais SELECT GET_LOCK("test", 3600), SELECT_IS_FREE("test") me retourne toujours 1.
Est-ce qu'il y a une configuration précise à faire dans MySQL pour activer le vérouillage?
J'ai vérifié et l'utilisateur que j'utilise pour mes accès à la BD a les droits "LOCK TABLES".
Merci de votre temps et votre aide,
Jonathan