Dynamic-Mess.com


"The world is a dynamic mess of jiggling things..."

Introduction aux transactions avec MySQL

Article posté le 23-01-2015 dans la catégorie SQL

Les 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.

1- Principe

Prenons un exemple, celui d'un virement bancaire. Il y a deux transactions :

  1. Débiter le compte émetteur
  2. Créditer le compte récepteur

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 :

2- Le code et ses applications

Dans les transactions il existe deux principes :

  1. Le commit : Valider les requêtes et les changement qu'elles impliquent
  2. Le rollback : Faire machine arrière pour annuler leurs effets

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.

 


Tweet
comments powered by Disqus