Article mis à jour le : 05-05-2022
Introductions et explications des transactions avec MySQLLes transactions sont élément clé dans la gestion de l'interaction d'une application avec une base SQL. Ils permettent de vérifier l'intégrité de vos données.
Prenons un exemple, celui d'un virement bancaire. Il y a deux transactions :
Ce qui nécessite deux requêtes. Seulement voilà, si le serveur crashe en n'ayant fait qu'une partie du travail, de l'argent aura "disparu' (ce qui en réalité n'est pas vraiment vrai étant donné que tout est dématérialisé).
Pour éviter ce genre de problème, on peut utiliser une transaction : elle comprend une liste des requêtes à effectuer. Si une seule rate, on annule toutes les autres afin que les données reviennent à la normale et que la base soit cohérente.
Quelques éléments à savoir :
Dans les transactions il existe deux principes :
Par défaut, MySQL est en mode autocommit, il faut donc lui dire de se mettre en mode manuel :
SET autocommit=0;
Pour valider les changements effectués :
COMMIT;
Pour les annuler :
ROLLBACK;
Maintenant, n'oubliez pas que :
Qu'en désactivant le mode autocommit vous démarrez une transaction, et qu'un commit ou un rollback y met fin. Cependant, si vous désirez laisser le mote autocommit activé, vous pouvez tout de même faire des transactions, il faut cependant le préciser avec cette commande :
START TRANSACTION
Commit et Rollback y mettront fin.
Enfin, rapide allusion aux verrous : au cours d'une transaction, MySQL pose des verrous sur les lignes concernées. Cela signifie que personne d'autre ne pourra altéter ces données tant que la transaction ne sera pas validée ou annulée.