Support des transactions
Il n'est pas possible d'utiliser les transactions sur n'importe quelle table. Pour les supporter, une table doit être transactionnelle,
ce qui, avec MySQL, est défini par le moteur de stockage utilisé pour la table.
Rappelez-vous, nous avons vu dans le chapitre sur la création des tables qu'il existait différents moteurs de stockage possibles
avec MySQL, dont les plus connus sont MyISAM et InnoDB.
MyISAM ne supportant pas les contraintes de clés étrangères, nos tables ont été créées avec le moteur InnoDB, ce qui tombe
plutôt bien pour la suite de ce chapitre. En effet :
les tables MyISAM sont non-transactionnelles, donc ne supportent pas les transactions ;
les tables InnoDB sont transactionnelles, donc supportent les transactions.
Syntaxe et utilisation
Vocabulaire
Lorsque l'on valide les requêtes d'une transaction, on dit aussi que l'on commite les changements. À l'inverse, l'annulation des
requêtes s'appelle un rollback.
Comportement par défaut
Vous l'aurez compris, par défaut MySQL ne travaille pas avec les transactions. Chaque requête effectuée est directement
commitée (validée). On ne peut pas revenir en arrière. On peut donc en fait considérer que chaque requête constitue une
transaction, qui est automatiquement commitée. Par défaut, MySQL est donc en mode "autocommit".
Pour quitter ce mode, il suffit de lancer la requête suivante :
Code : SQL
SET autocommit=0;
Une fois que vous n'êtes plus en autocommit, chaque modification de donnée devra être commitée pour prendre effet. Tant que
vos modifications ne sont pas validées, vous pouvez à tout moment les annuler (faire un rollback).
Valider/annuler les changements
Les commandes pour commiter et faire un rollback sont relativement faciles à retenir :
Code : SQL
COMMIT;
-- pour valider les requêtes
Partie 5 : Sécuriser et automatiser ses actions
222/414
www.openclassrooms.com
Il n'est pas possible d'utiliser les transactions sur n'importe quelle table. Pour les supporter, une table doit être transactionnelle,
ce qui, avec MySQL, est défini par le moteur de stockage utilisé pour la table.
Rappelez-vous, nous avons vu dans le chapitre sur la création des tables qu'il existait différents moteurs de stockage possibles
avec MySQL, dont les plus connus sont MyISAM et InnoDB.
MyISAM ne supportant pas les contraintes de clés étrangères, nos tables ont été créées avec le moteur InnoDB, ce qui tombe
plutôt bien pour la suite de ce chapitre. En effet :
les tables MyISAM sont non-transactionnelles, donc ne supportent pas les transactions ;
les tables InnoDB sont transactionnelles, donc supportent les transactions.
Syntaxe et utilisation
Vocabulaire
Lorsque l'on valide les requêtes d'une transaction, on dit aussi que l'on commite les changements. À l'inverse, l'annulation des
requêtes s'appelle un rollback.
Comportement par défaut
Vous l'aurez compris, par défaut MySQL ne travaille pas avec les transactions. Chaque requête effectuée est directement
commitée (validée). On ne peut pas revenir en arrière. On peut donc en fait considérer que chaque requête constitue une
transaction, qui est automatiquement commitée. Par défaut, MySQL est donc en mode "autocommit".
Pour quitter ce mode, il suffit de lancer la requête suivante :
Code : SQL
SET autocommit=0;
Une fois que vous n'êtes plus en autocommit, chaque modification de donnée devra être commitée pour prendre effet. Tant que
vos modifications ne sont pas validées, vous pouvez à tout moment les annuler (faire un rollback).
Valider/annuler les changements
Les commandes pour commiter et faire un rollback sont relativement faciles à retenir :
Code : SQL
COMMIT;
-- pour valider les requêtes
Partie 5 : Sécuriser et automatiser ses actions
222/414
www.openclassrooms.com
