Mysql
 sql >> Base de données >  >> RDS >> Mysql

Transaction MySQL :commit et rollback

1) Toutes les modifications que vous apportez sont visibles dans la même transaction. Si vous le faites

START TRANSACTION;
INSERT INTO MyTable VALUES ('Hi there');
SELECT * FROM MyTable;

votre sortie inclura le "Salut". Mais si vous démarrez une deuxième connexion à la base de données, la nouvelle ligne ne sera pas affichée tant que vous n'aurez pas validé votre transaction à partir de la première connexion. Essayez de jouer avec ceci en utilisant deux connexions à la base de données à l'aide de la ligne de commande.

Vous ne voyez pas l'effet sur votre site Web car vous ne pouvez pas avoir la même transaction dans deux connexions à la base de données (une nouvelle connexion à la base de données sera établie au début de votre demande).

2) Toutes les transactions qui ne sont pas validées seront annulées lorsque la connexion avec la base de données sera fermée. Donc, si ce sont vos deux seules requêtes, il n'y a pas de différence. Cependant, il y a une différence entre

START TRANSACTION;
INSERT INTO MyTable VALUES ('This one would be discarded on rollback');
ROLLBACK;
INSERT INTO MyTable VALUES ('This one will be permanent because not within transaction');  

3) Oui, ce sont tous les mêmes.