Ressource
Affirmation
Peut être l’une des anomalies les plus connues et qu’on souhaite éviter à tout prix
Explication du problème

Dans cet exemple, Bob nʼest pas au courant quʼAlice vient de modifier la quantité de 7 à 6, donc sa mise à jour est écrasée par la modification de Bob.
SELECT qty FROM stock WHERE id=1- On calcule en app
UPDATE stock SET qty = …alors une autre transaction peut passer entre les deux → et on écrase sa modification.
Si les deux transactions visent à modifier les mêmes colonnes, la deuxième transaction écrasera la première, d’un point de vue SQL aucun problème mais d’un point de vue logique métier ce n’est pas bon.
Comment corriger ce problème ?
On peut prévenir d’un Lost Update en utilisant des verrous SELECT ... FOR UPDATE.
Ainsi, au lieu de faire un simple SELECT, Alice fait un SELECT ... FOR UPDATE. Ceci empêchera Bob de sélectionner en même temps, il doit attendre que le verrou soit libéré.
