sql >> Base de Datos >  >> RDS >> Mysql

Transacción Mysql:compromiso y reversión

1) Todos los cambios que realice son visibles dentro de la misma transacción. Si lo haces

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

su salida incluirá el 'Hola'. Pero si inicia una segunda conexión a la base de datos, la nueva fila no se mostrará hasta que confirme su transacción desde la primera conexión. Intenta jugar con esto usando dos conexiones de bases de datos usando la línea de comandos.

No está viendo el efecto en su sitio web porque no puede tener la misma transacción dentro de dos conexiones de base de datos (se realizará una nueva conexión de base de datos al comienzo de su solicitud).

2) Todas las transacciones que no se confirmen se revertirán cuando se cierre la conexión con la base de datos. Entonces, si estas son sus dos únicas consultas, no hay diferencia. Sin embargo, hay una diferencia 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) Sí, son todos iguales.