Mysql:transactionel

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Commandes MySQL (transactions)
Voir aussi Mysql:GRANT · Mysql:maintenance

Mysql:transactionel documente le contrôle des transactions sous MySQL/MariaDB (moteur InnoDB — les tables MyISAM ne sont pas transactionnelles) ainsi que le verrouillage explicite de tables.

Transactions (InnoDB)

START TRANSACTION;   -- ou BEGIN / BEGIN WORK
... requêtes ...
COMMIT;               -- valide la transaction
ROLLBACK;              -- annule la transaction

Points de sauvegarde intermédiaires :

SAVEPOINT nom_point;
ROLLBACK TO SAVEPOINT nom_point;
RELEASE SAVEPOINT nom_point;

Mode autocommit (activé par défaut : chaque requête est validée immédiatement) :

SET autocommit = 0;   -- désactive l'autocommit, requiert un COMMIT/ROLLBACK explicite
SET autocommit = 1;

Verrouillage explicite de tables

Alternative aux transactions InnoDB, utilisable aussi sur des moteurs non transactionnels comme MyISAM :

LOCK TABLES nom_table WRITE;
... requêtes ...
UNLOCK TABLES;

À ne pas confondre

D'autres commandes d'administration MySQL sont parfois citées à tort à côté des transactions ; elles n'ont pas de lien direct avec le contrôle transactionnel :

  • GRANT / REVOKE — droits d'accès, voir Mysql:GRANT
  • CHECK TABLE / REPAIR TABLE / OPTIMIZE TABLE / ANALYZE TABLE / CACHE INDEX — maintenance, voir Mysql:maintenance
  • Sauvegarde d'une base — voir Mysqldump
  • Changer le mot de passe d'un utilisateur — voir Mysql:GRANT

Voir aussi