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

Transacciones de rieles

Si tiene una combinación de código que necesita transacciones explícitas y código que puede depender de la confirmación automática, tal vez no debería deshabilitar la confirmación automática para todas las conexiones. Está en el camino correcto y se pregunta si esto afectará a otro código. Si deshabilita la confirmación automática, pero el otro código no sabe que tiene que confirmar para que se confirme su trabajo, entonces eso será un problema. El trabajo no comprometido se revierte cuando se cierra la conexión.

Debe tener en cuenta que el motor de almacenamiento predeterminado para MySQL es MiISAM , que no admite transacciones en absoluto. Cuando realiza cambios en una tabla que usa MyISAM, los cambios se confirman inmediatamente, independientemente de sus solicitudes explícitas para comenzar y finalizar transacciones, e independientemente del estado de confirmación automática. Por lo tanto, no podrá retroceder pase lo que pase, a menos que haya creado sus tablas usando InnoDB motor de almacenamiento (u otros motores de almacenamiento seguros para transacciones como BDB ).

Es innecesario para deshabilitar el modo de confirmación automática para usar transacciones en MySQL. Simplemente comience una transacción explícitamente. Las siguientes declaraciones SQL serán parte de una transacción hasta que confirme o revierta esa transacción, independientemente del valor de confirmación automática en su conexión actual.

http://dev.mysql.com/doc/refman/5.0 /es/commit.html dice: