English version (when available)
create table A (a char(2), b int (2));
insert into A (a,b) values ('1', 1);
select count(*) from A; -- devuelve 1 filas
select count(*) from A; -- devuelve 1 filas
start transaction; --inicia transacción y desactiva autocommit insert into A (a,b) values ('2', 2);
select count(*) from A; -- devuelve 2 filas
select count(*) from A; -- devuelve 1 fila
-- SESION 1 commit; -- valida y fin de transacción select count(*) from A; -- devuelve 2 filas -- SESION 2 select count(*) from A; -- devuelve 2 filas
start transaction; insert into A (a,b) values ('3', 3); select count(*) from A; -- devuelve 3 filas
select count(*) from A; -- devuleve 2 filas
--SESION 1 rollback; -- deshace y fin de transacción select count(*) from A; -- devuleve 2 filas -- SESION 2 select count(*) from A; -- devuleve 2 filas
start transaction; insert into A (a,b) values ('3', 3); select count(*) from A; -- devuelve 3 filas
select count(*) from A; -- devuelve 2 filas
create table B (c char(1));
Update A set b=5;
-- No se puede retroceder. La inserción no se puede puesto que create es sentencia de definición de datos. Eso supone que se ha finalizado transacción y validados los cambios pendientes. Con el commit automático del create, autocommit se ha activado, por lo tanto la actualización también está validada y no se puede deshacer.