Référence du langage MySQL
<<<
Syntaxe de BEGIN/COMMIT/ROLLBACK Syntaxe de LOCK TABLES/UNLOCK TABLES
>>>

6.7 Commandes relatives aux verrous et aux transactions
6 Référence du langage MySQL
 Manuel de Référence MySQL 4.1 : Version Française

->Syntaxe de BEGIN/COMMIT/ROLLBACK
Syntaxe de LOCK TABLES/UNLOCK TABLES
Syntaxe de SET TRANSACTION

6.7.1 Syntaxe de BEGIN/COMMIT/ROLLBACK

Par défaut, MySQL est lancé en mode autocommit . Cela signifie que chaque modification effectué est enregistré immédiatement sur le disque par MySQL.

Si vous utilisez des tables supportant les transactions (comme InnoDB , BDB ), vous pouvez configurer MySQL en mode non- autocommit grâce à la commande:

SET AUTOCOMMIT=0
A partir de là, vous devez utiliser COMMIT pour enregistrer les modifications sur le disque ou ROLLBACK pour ignorer les modifications apportées depuis le début de la transaction.Si vous souhaitez sortir du mode AUTOCOMMIT pour une série d'opérations, vous pouvez utiliser les commandes BEGIN ou BEGIN WORK :

BEGIN;
SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
UPDATE table2 SET summmary=@A WHERE type=1;
COMMIT;
Vous devez savoir que si vous utilisez des tables ne supportant pas les transactions, les modifications seront écrites immédiatement, indépendamment de l'état du mode de autocommit Si vous faites un ROLLBACK après avoir modifié une table non transactionnelle, vous obtiendrez ( ER_WARNING_NOT_COMPLETE_ROLLBACK ) comme message d'alerte. Toutes les tables supportant les transactions seront restaurées, mais aucune des autres tables ne changera.

Si vous utilisez BEGIN ou SET AUTOCOMMIT=0 , il est recommandé d'utiliser les "binary log" de MySQL à la place des anciens logs d'update pour les sauvegardes. Les transactions sont stockées dans les logs binaires en un seul bloc, après COMMIT , pour être sû que les transactions qui ont été annulées ne soient pas enregistrées. Le log binaire des mises à jour .

Les commandes suivantes déclenchent la fin des transactions (comme si vous aviez utilisé COMMIT avant d'exécuter la commande):
Commande Commande Commande
ALTER TABLE BEGIN CREATE INDEX
DROP DATABASE DROP TABLE RENAME TABLE
TRUNCATE
Vous pouvez changer le niveau d'isolation des transactions avec SET TRANSACTION ISOLATION LEVEL ... . Syntaxe de SET TRANSACTION .

<< Syntaxe de BEGIN/COMMIT/ROLLBACK >>
Référence du langage MySQL Commandes relatives aux verrous et aux transactions Syntaxe de LOCK TABLES/UNLOCK TABLES