Para que serve uma MySQL Transaction?

Uma MySQL transaction é um conjunto de operações de banco de dados que são tratadas como uma unidade indivisível. Ela permite que você execute várias consultas e atualizações no banco de dados como uma única operação, garantindo a integridade e consistência dos dados.

Existem situações em que você precisa garantir que um conjunto de operações de banco de dados seja executado completamente ou não seja executado de forma alguma. Por exemplo, se você estiver realizando uma transferência de fundos entre contas, é essencial que a retirada seja realizada e a adição seja confirmada com sucesso. Se qualquer uma dessas operações falhar, você não quer que nenhuma delas seja registrada no banco de dados.

Nessas situações, você pode usar uma transação para garantir que todas as operações sejam concluídas corretamente ou que nenhuma delas seja executada. Uma transação tem quatro propriedades principais, conhecidas como ACID:

  • Atomicidade (Atomicity): Todas as operações dentro da transação são tratadas como uma única unidade atômica. Isso significa que todas as operações são concluídas com sucesso ou nenhuma delas é registrada no banco de dados.

  • Consistência (Consistency): A transação garante que o banco de dados passe de um estado consistente para outro estado consistente. Isso significa que todas as restrições de integridade e validações são verificadas antes e após a transação.

  • Isolamento (Isolation): A transação garante que uma operação não interfere em outras transações em andamento. Isso significa que as operações realizadas dentro de uma transação são isoladas e não são visíveis para outras transações até serem concluídas.

  • Durabilidade (Durability): Uma vez que uma transação é confirmada (commit), suas alterações são permanentemente registradas no banco de dados e são resistentes a falhas do sistema.

Para implementar uma transação em MySQL, você pode iniciar uma transação com o comando “BEGIN” ou “START TRANSACTION”, realizar as operações desejadas e, em seguida, confirmar (commit) as alterações com o comando “COMMIT” ou desfazer (rollback) todas as alterações com o comando “ROLLBACK”. Esses comandos garantem a execução correta e consistente das operações no banco de dados.

Por exemplo, suponha que você queira transferir dinheiro de uma conta A para uma conta B. Você pode iniciar uma transação, verificar se a conta A tem saldo suficiente, debitar o valor da conta A, verificar se a conta B existe, creditar o valor na conta B e, em seguida, confirmar a transação. Se houver qualquer problema ou falha em uma dessas etapas, você pode desfazer a transação e garantir que nenhuma alteração tenha sido feita no banco de dados.