Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Problema LOCK TABLES + transacción en INNODB

Estas en el tema de Problema LOCK TABLES + transacción en INNODB en el foro de Mysql en Foros del Web. Buenas, tengo un problema con una transacción en la base de datos y me gustaría saber si pueden ayudarme. lo que pasa es que quiero ...
  #1 (permalink)  
Antiguo 22/09/2011, 10:12
Avatar de Ribon  
Fecha de Ingreso: septiembre-2010
Ubicación: El firmamento
Mensajes: 487
Antigüedad: 9 años, 2 meses
Puntos: 91
Información Problema LOCK TABLES + transacción en INNODB

Buenas, tengo un problema con una transacción en la base de datos y me gustaría saber si pueden ayudarme.

lo que pasa es que quiero hacer un bloqueo de tabla para realizar una serie de operaciones en la base de datos pero además respetar el ACID realizando todas esas operaciones encapsuladas en una transacciones.

a modo de prueba hice esto, respetando lo que dice la documentación oficial de como hacer lock table y transacciones en innodb:


Código MySQL:
Ver original
  1. SET AUTOCOMMIT=0;
  2.  
  3. {{ Operaciones con t1 y t2 }}
  4.  
  5. UNLOCK TABLES;


El problema que tengo es que aún haciendo ROLLBACK los registros se me están escribiendo en las tablas (eso despues lo convertiré a COMMIT pero para las pruebas hago ROLLBACK).

Mi pregunta es, ¿Qué me mata la transacción o me vuelve autocommit=1 ?
probé poniendo el AUTOCOMMIT=0 después del LOCK TABLES pero igual me sucede lo mismo.

si hago solo esto:

Código MySQL:
Ver original
  1.  
  2. {{Operaciones con t1 y t2 }}
  3.  


eso si me funciona pero no me sirve porque requiero del bloqueo de las tablas porque estoy trabajando con bodegas y stock.

Si me pueden ayudar les agradecería :)

Saludos.
  #2 (permalink)  
Antiguo 22/09/2011, 18:06
 
Fecha de Ingreso: febrero-2008
Ubicación: Sevilla
Mensajes: 91
Antigüedad: 11 años, 9 meses
Puntos: 15
Respuesta: Problema LOCK TABLES + transacción en INNODB

Autocommit=0 debe ir antes de lock tables siempre.

Lock table no puede contener inicios de transacciones, pues estas llevan implicitas un unlock table, y rollback intenta devolver al estado original desde el comienzo de la transaccion, por lo tanto, rollback necesita de una transaccion para ejecutarse.

Intenta hacer el rollback una vez realizado el unlock-tables, aunque no estoy seguro de que funcione.

Un saludo!
  #3 (permalink)  
Antiguo 23/09/2011, 12:48
Avatar de Ribon  
Fecha de Ingreso: septiembre-2010
Ubicación: El firmamento
Mensajes: 487
Antigüedad: 9 años, 2 meses
Puntos: 91
Respuesta: Problema LOCK TABLES + transacción en INNODB

Muchas gracias, no lo he probado pero creo que es el UNLOCK TABLES el qaue me hace un COMMIT implicito, pues leí en el manual y dice (aisladamente):

Cita:
"UNLOCK TABLES también realiza un commit de una transacción si hay cualquier tabla bloqueada."
Cosa que no había leído pues no aparecía UNLOCK TABLES en la tabla de operaciones que hacen COMMIT implicito :P

Gracias por la ayuda :)

Saludos.

Etiquetas: innodb, lock, registros, tabla, tables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:47.