Ver Mensaje Individual
  #6 (permalink)  
Antiguo 08/09/2011, 11:40
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Duda transacciones. No puedo insertar datos tras un rollback

No es raro. Es lo correcto.

Una transacción es un conjunto de operaciones DML que se ejecutan de una forma atómica. Se entiende por atómica que ese conjunto de operaciones se realicen y consoliden como si fuesen una sola, por lo que sólo se confirma cuando la última finaliza.
Lo que sucede al declarar las transacciones es que todas las operaciones quedan en un estado "no confirmado", pero son accesibles por el usuario cuando consulta. Ahora bien, para que las operaciones queden definitivamente asentadas y disponibles para todos los usuarios, debe si o si indicarse COMMIT, o su operación contraria ROLLBACK, que deshace todo. Si no lo haces, y cierras las conexión, se produce un ROLLBACK implícito y todas las modificaciones se cancelan.

Entonces la secuencia es:

Código MySQL:
Ver original
  1. /* Operaciones varias */
  2. IF (condición buscada) THEN
  3.     COMMIT;
  4.     ROLLBACK;

¿Se entiende la idea?

Una cosa que tienes que tener muy en cuenta: Como la caida de una conexión en medio de una transacción genera un ROLLACK implícito, no puedes realizar en la programación de tus aplicaciones cierres de conexiones a MySQL en medio de una transacción.
Tenlo en cuenta para cuando programes.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)