Par exemple, j'ai un "Connection1" veut augmenter le compteur "currentcount", puis sélectionnez la valeur. "Connection2" veut faire la même chose et fonctionne exactement au même moment. Ce sont les requêtes qui sont en cours d'exécution (mais pas en tant que transaction).Comment éviter une condition de concurrence lors de l'utilisation d'un compteur lu et incrémenté par deux connexions?
Query 1: UPDATE table SET currentcount=currentcount+1;
Query 2: SELECT currentcount FROM table;
Si Connection1 et Connection2 fonctionnent Query1 en même temps, puis Query2 exactement au même temps, le résultat de query2 sera la même pour les deux connexions (à savoir une condition de course).
J'ai entendu dire que les transactions peuvent fonctionner dans cette situation. Comment pourrais-je résoudre ce problème dans mysql?
Ne pouvez-vous pas utiliser un incrément automatique et laisser le moteur DB gérer cela pour vous? – gbn
voir http://stackoverflow.com/a/8231775/6782 – Alnitak
@gbn: L'auto-incrémentation n'est-elle pas utilisée uniquement lors de l'insertion de lignes dans une table de base de données? Je veux juste mettre à jour et lire une seule entrée dans le tableau. – eric