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

Quando devo usar transações MySQL?


As transações são usadas quando você tem um grupo de consultas que dependem umas das outras.

Por exemplo, um banco:
  • O cliente do banco "John" transfere US$ 100 para a conta de "Alice".
  • Para este exemplo, há 2 consultas (não estou mostrando o registro ou histórico de transações...etc). Você precisa deduzir $ 100 do saldo de John e adicioná-lo ao saldo de Alice.
  • Start transaction
  • Deduzir de John
    • UPDATE accounts SET balance=balance-100 WHERE account='John'
  • Adicionar a Alice
    • UPDATE accounts SET balance=balance+100 WHERE account='Alice'
  • commit

Uma transação não é salva até que você a confirme. Portanto, se houvesse um erro em qualquer uma das consultas, você poderia chamar rollback e desfaça todas as consultas executadas desde que a transação foi iniciada. Se por algum motivo a consulta para adicionar $ 100 a Alice falhar, você poderá reverter e não deduzir $ 100 de John. É uma maneira de garantir que você possa desfazer consultas automaticamente, se necessário.

  • Devo iniciar uma transação quando executo duas ou mais consultas de exclusão/atualização/inserção?

    Depende do que as consultas estão fazendo.

  • Devo também iniciar uma transação quando tiver apenas uma consulta de exclusão/atualização/inserção?

    Não é necessário, a menos que você precise de uma maneira de reverter (desfazer) a consulta, como você deseja fazer uma atualização e validá-la antes de chamar commit (salvar).

  • Devo iniciar uma transação como 10 vezes em uma página, ou melhor apenas uma vez para a página inteira, ou você recomenda um máximo para cada página (por exemplo, 5)?

    Comece quantas precisar. Duvido que você tenha várias transações por página, pois provavelmente faria uma coisa em cada carregamento de página (ou seja, transferir dinheiro).