Bonjour, j'espère que c'est le bon endroit pour poser cette question.
J'utilise PHP avec PDO et le système de base de données est MariaDB. Ma question est de savoir si les transactions protègent les autres de la lecture pendant la transaction ? Par exemple, je veux ajouter 1 à une valeur dans la base de données donc je...
Commencer une opération
Lire la valeur de la base de données
Incrémenter la valeur
Écrivez la valeur mise à jour dans la base de données
S'engager
Si ce script est exécuté deux fois à peu près au même moment, puis-je être sûr que la valeur dans la base de données est réellement mise à jour deux fois et non une fois ? En d'autres termes, ce qui suit ne peut pas arriver?
La valeur 5 est stockée dans la DB
Le processus 1 lit la valeur 5
Le processus 2 lit la valeur 5
Le processus 1 incrémente la valeur pour qu'elle devienne 6 et la réécrit dans la base de données et valide.
Le processus 2 fait la même chose, en écrivant également 6 dans la base de données et en commettant.
La valeur finale dans la base de données est 6 mais elle aurait dû être 7.