Gérer les transactions et les accès concurrents
1. Définition
Dans la terminologie des bases de données relationnelles, une transaction est un ensemble d’ordres de mise à jour qui forme un tout indissociable du point de vue de la logique applicative. Les ordres de mise à jour d’une transaction ne peuvent être définitivement enregistrés dans la base de données que s’ils se sont tous exécutés sans erreur ; si un des ordres de mise à jour échoue, toutes les modifications déjà effectuées dans la transaction doivent être annulées. À la fin d’une transaction, la base de données est toujours dans un état cohérent du point de vue de la logique applicative.
TransactionÀ titre d’exemple, considérons une transaction de virement bancaire qui serait constituée de trois ordres de mise à jour :
-
un premier UPDATE pour débiter le premier compte ;
-
un deuxième UPDATE pour créditer le deuxième compte ;
-
un INSERT pour enregistrer l’opération dans un journal.
Si le deuxième UPDATE échoue pour une raison ou pour une autre, il faut annuler le premier UPDATE et ne pas effectuer l’ordre INSERT.
2. Gérer les transactions
Par défaut, MySQL fonctionne dans un mode validation automatique (option AUTOCOMMIT égale à 1) : chaque modification effectuée est immédiatement...