sql >> Base de Datos >  >> RDS >> Mysql

¿Cuándo debo usar transacciones MySQL?

Las transacciones se utilizan cuando tiene un grupo de consultas que dependen unas de otras.

Por ejemplo, un banco:

  • El cliente del banco "John" transfiere $100 a la cuenta de "Alice".
  • Para este ejemplo, hay 2 consultas (no muestro el registro ni el historial de transacciones, etc.). Debe deducir $100 del saldo de John y agregarlo al saldo de Alice.
  • Start transaction
  • Deducir de John
    • UPDATE accounts SET balance=balance-100 WHERE account='John'
  • Añadir a Alicia
    • UPDATE accounts SET balance=balance+100 WHERE account='Alice'
  • commit

Una transacción no se guarda hasta que la confirmas. Entonces, si hubo un error en cualquiera de las consultas, puede llamar a rollback y deshaga cualquier consulta que se haya ejecutado desde que se inició la transacción. Si por alguna razón la consulta para agregar $100 a Alice falla, puede retroceder y no deducir $100 de John. Es una forma de asegurarse de que puede deshacer consultas automáticamente si es necesario.

  • ¿Debo iniciar una transacción cuando ejecuto dos o más consultas de eliminación/actualización/inserción?

    Depende de lo que estén haciendo las consultas.

  • ¿También debo iniciar una transacción cuando solo tengo una consulta de eliminación/actualización/inserción?

    No es necesario a menos que necesite una forma de revertir (deshacer) la consulta como si quisiera hacer una actualización y validarla antes de llamar a confirmar (guardar).

  • ¿Debo comenzar una transacción como 10 veces en una página, o mejor solo una vez para toda la página, o recomiendan un máximo para cada página (por ejemplo, 5)?

    Inicie tantos como necesite. Dudo que tenga múltiples transacciones por página, ya que lo más probable es que esté haciendo una cosa en cada carga de página (es decir, transfiriendo dinero).