Transações no MySQL

Ola pessoal,

Falaremos agora sobre transações, para então dar continuidade a outro assunto que é importante, os níveis de isolamento.

Primeiramente, uma transação é um meio de executar uma ou mais instruções SQL com uma única unidade de trabalho, onde todas ou nenhuma das instruções são bem sucedidas.

Ou seja, se todas as instruções foram concluidas sem erros, você poderá registrar estas em definitivo no banco de dados. Porém caso ocorra algum erro, você poderá retornar a um ponto de salvamento ou efetuar um rollback, cancelando a alteração.

Um exemplo simples via SQL:

Se tratando do MySQL, apenas o InnoDB suportá transações a nível ACID, logo estas opções não são validas ou não tem o efeito esperado em outros Engines.

transacao

*Imagem obtida em: atikum.ueuo.com

Segue abaixo as instruções de Controle SQL de uma transação:

Mas e o AUTOCOMMIT? O AUTOCOMMIT é ativado por padrão, logo o MySQL confirma implicitamente cada instrução como uma transação.

Uma vez desativado, será possível manusear cada transação, porém fica a critério do DBA/DEV. Para desativar o autocommit:

Para verificar a configuração através do select:

A partir da versão 5.5.8 do MySQL, é possível definir o autocommit = 0 de forma global na seção do [mysqld] no seu arquivo de configuração (default my.cnf).

Conforme dito no inicio, no próximo post iremos falar dos níveis de isolamento disponíveis para trabalho. Como o MySQL trata o select de um dado que esta em transação? Pega o valor que ainda não foi comitado? E se a transação tiver um rollback, como fica? Até breve com todas estas explicações.

Referencias:

https://dev.mysql.com/doc/refman/5.6/en/savepoint.html

https://dev.mysql.com/doc/refman/5.6/en/commit.html



É isso ai pessoal.

Dúvidas, criticas ou sugestões? Fiquem a vontade, todo retorno é construtivo 🙂

Jose Wilson

Deixe uma resposta