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