Partie II
Programmation procédurale
228
© Éditions Eyrolles
Début et fin d’une transaction
Deux instructions sont disponibles pour marquer le début d’une transaction : START TRANSACTION ou BEGIN. Ainsi, entre BEGIN et END d’un programme MySQL, il est possible
d’écrire plusieurs transactions. Le fait de commencer une transaction termine implicitement
celle qui précédait ladite transaction.
Une transaction se termine explicitement par les instructions SQL COMMIT ou ROLLBACK. Elle
se termine implicitement :
• à la première commande SQL du LDD ou du LCD rencontrée (CREATE, ALTER, DROP…) ;
• à la fin normale d’une session utilisateur avec déconnexion ;
• à la fin anormale d’une session utilisateur (sans déconnexion).
Nous détaillons ici les principes de base d’une transaction MySQL sans entrer dans des détails
plus techniques (vérouillages, accès concurrents et transactions réparties) qui sortent du cadre
de cet ouvrage.
Mode de validation
Deux modes de fonctionnement sont possibles : celui par défaut (autocommit) qui valide
systématiquement toutes les instructions reçues par la base. Dans ce mode point de salut, car il
vous sera impossible de revenir en arrière afin d’annuler une instruction. Le mode à utiliser
pour programmer des transactions est celui inverse (autocommit off) qui se déclare à l’aide du
paramètre 0 dans l’instruction suivante :
SET AUTOCOMMIT = {0 | 1}
Le tableau suivant précise la validité de la transaction en fonction des événements possibles :
Votre première transaction
Vous pouvez tester rapidement une transaction en écrivant le bloc suivant qui insère une ligne
dans une de vos tables.
Tableau 6-23 Validité d’une transaction
Événement
Validité
COMMIT
Transaction validée.
ROLLBACK
Commande SQL (LDD ou LCD).
Fin anormale d’une session.
Transaction non validée.
Programmation procédurale
228
© Éditions Eyrolles
Début et fin d’une transaction
Deux instructions sont disponibles pour marquer le début d’une transaction : START TRANSACTION ou BEGIN. Ainsi, entre BEGIN et END d’un programme MySQL, il est possible
d’écrire plusieurs transactions. Le fait de commencer une transaction termine implicitement
celle qui précédait ladite transaction.
Une transaction se termine explicitement par les instructions SQL COMMIT ou ROLLBACK. Elle
se termine implicitement :
• à la première commande SQL du LDD ou du LCD rencontrée (CREATE, ALTER, DROP…) ;
• à la fin normale d’une session utilisateur avec déconnexion ;
• à la fin anormale d’une session utilisateur (sans déconnexion).
Nous détaillons ici les principes de base d’une transaction MySQL sans entrer dans des détails
plus techniques (vérouillages, accès concurrents et transactions réparties) qui sortent du cadre
de cet ouvrage.
Mode de validation
Deux modes de fonctionnement sont possibles : celui par défaut (autocommit) qui valide
systématiquement toutes les instructions reçues par la base. Dans ce mode point de salut, car il
vous sera impossible de revenir en arrière afin d’annuler une instruction. Le mode à utiliser
pour programmer des transactions est celui inverse (autocommit off) qui se déclare à l’aide du
paramètre 0 dans l’instruction suivante :
SET AUTOCOMMIT = {0 | 1}
Le tableau suivant précise la validité de la transaction en fonction des événements possibles :
Votre première transaction
Vous pouvez tester rapidement une transaction en écrivant le bloc suivant qui insère une ligne
dans une de vos tables.
Tableau 6-23 Validité d’une transaction
Événement
Validité
COMMIT
Transaction validée.
ROLLBACK
Commande SQL (LDD ou LCD).
Fin anormale d’une session.
Transaction non validée.
