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

Transações de trilhos


Se você tem uma combinação de código que precisa de transações explícitas e código que pode depender do autocommit, talvez você não deva desabilitar o autocommit para todas as conexões. Você está no caminho certo se perguntando se isso afetará outro código. Se você desabilitar o autocommit, mas o outro código não sabe que precisa confirmar para ter seu trabalho confirmado, isso será um problema. O trabalho não confirmado é revertido quando a conexão é fechada.

Você deve estar ciente de que o mecanismo de armazenamento padrão para MySQL é MeuISAM , que não oferece suporte a transações. Quando você faz alterações em uma tabela que usa MyISAM, as alterações são efetivamente confirmadas imediatamente, independentemente de suas solicitações explícitas para iniciar e finalizar transações e independentemente do estado de confirmação automática. Portanto, você não poderá reverter, não importa o que aconteça, a menos que tenha criado suas tabelas usando o InnoDB mecanismo de armazenamento (ou outros mecanismos de armazenamento seguros para transações, como BD ).

É desnecessário para desabilitar o modo autocommit para usar transações no MySQL. Simplesmente inicie uma transação explicitamente. As instruções SQL a seguir farão parte de uma transação até você confirmar ou reverter essa transação, independentemente do valor de confirmação automática em sua conexão atual.

http://dev.mysql.com/doc/refman/5.0 /en/commit.html diz: