Les transactions
Une transaction est un mécanisme permettant de regroupper plusieurs requetes sous forme logique. Si une erreur parvient lors de l’execution, aucune requête n’est effectuée.
Une transaction permet d’atteindre deux des points de la norme ACID (Atomicité et Isolation). Les transactions sont disponibles pour les moteurs de stockages suivants :
- InnoDB
- BerckleyDB
- FalconDB
- DB
Syntaxe
Une transaction débute toujours par : START TRANSACTION
Pour sauvegarder une transaction, on utilisera : COMMIT
Pour revenir en cas d’erreur, on utilisera ROLLBACK
Attention : Un rollback permet de revenir à un état après un COMMIT.
Le rollback ne peut s’utiliser uniquement pour les DML
Comportements chez InnoDB
Chaque requête est placée sous transaction. Pour gagner en performance, il faut désactiver AUTOCOMMIT ( SET AUTOCOMMIT=0 )
Attention, si on démarre une transaction sans la valider, les autres utilisateurs ne verront pas la modification. Cependant, la personne executant la requete la verra.
mysql> START TRANSACTION; INSERT INTO t_innodb(v1,v2) VALUES ('b',2); ROLLBACK;
Query OK, 0 rows affected (0.00 sec)
Query OK, 1 row affected (0.00 sec)
Query OK, 0 rows affected (0.02 sec)
mysql> SELECT * FROM t_innodb;
+------+------+
| v1 | v2 |
+------+------+
| a | 1 |
| a | 1 |
+------+------+
2 rows in set (0.00 sec)
//
mysql> START TRANSACTION; TRUNCATE t_innodb; ROLLBACK;
Query OK, 0 rows affected (0.00 sec)
Query OK, 3 rows affected (0.01 sec)
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT * FROM t_innodb;
Empty set (0.00 sec)
mysql>

Commentaires récents