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 13.4.6, « Syntaxe de SET TRANSACTION
».
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.