Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Transação do MySQL:commit e rollback


1) Todas as alterações feitas são visíveis na mesma transação. Se você fizer
START TRANSACTION;
INSERT INTO MyTable VALUES ('Hi there');
SELECT * FROM MyTable;

sua saída incluirá o 'Oi lá'. Mas se você iniciar uma segunda conexão de banco de dados, a nova linha não será exibida até que você confirme sua transação de dentro da primeira conexão. Tente brincar com isso usando duas conexões de banco de dados usando a linha de comando.

Você não está vendo o efeito em seu site porque não pode ter a mesma transação em duas conexões de banco de dados (uma nova conexão de banco de dados será feita no início de sua solicitação).

2) Todas as transações que não forem confirmadas serão revertidas quando a conexão com o banco de dados for encerrada. Portanto, se essas são suas duas únicas consultas, não há diferença. No entanto, há uma diferença 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) Sim, são todos iguais.