:: DEVELOPER ZONE
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 :
START TRANSACTION; SELECT @A:=SUM(salary) FROM table1 WHERE type=1; UPDATE table2 SET summmary=@A WHERE type=1; COMMIT;
BEGIN et BEGIN WORK peuvent être utilisé à la place de
START TRANSACTION pour initialiser une transaction.
START TRANSACTION a été ajouté en MySQL 4.0.11; C'est une syntaxe SQL-99,
et il est recommandé de l'utiliser pour lancer une transaction.
BEGIN et BEGIN WORK sont disponibles pour MySQL 3.23.17 et 3.23.19, respectivement.
Notez que si vous n'utilisez pas de table transactionnelles, les modifications seront validées automatiquement, indépendamment du mode de validation.
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 START TRANSACTION ou SET AUTOCOMMIT=0, il est
recommandé d'utiliser les "binary log" de MySQL à la place des
anciens logs de modifications pour les sauvegardes. Les transactions sont
stockées dans les logs binaires en un seul bloc, après
COMMIT, pour être sûr que les transactions qui ont
été annulées ne soient pas enregistrées. See Section 5.9.4, « Le log binaire ».
Vous pouvez changer le niveau d'isolation des transactions avec SET TRANSACTION ISOLATION LEVEL ....
See Section 14.4.6, « Syntaxe de SET TRANSACTION ».
© 1995-2005 MySQL AB. All rights reserved.
