Ver Mensaje Individual
  #1  
Antiguo 13-05-2008
victorhugo victorhugo is offline
Registrado
 
Registrado: feb 2008
Posts: 2
Reputación: 0
victorhugo Va por buen camino
relacion padre hijo

Hola Amigos,
Tengo dos tablas Mysql InnoDB padre-hijo en un ambiente multiusuario en una aplicación desarrollada con Delphi 7 y componentes Zeos.
El problema se resume en lo siguiente:

INSERT ... SELECT FROM TABLA A
SELECT LAST_INSERT_ID() id FROM TABLA A FOR UPDATE
INSERT... SELECT :id ... FROM TABLA B


Sucede que al querer consultar sobre el registro que se insertó en la Tabla B con el id del insertado en la Tabla A, me encuentro con que en algunas ocaciones ese registro/relación se mantiene y en otros NO. Para ser más claro, un registro insertado en la tabla A con el id 10, no se inserta en la tabla B.
Esta acción aleatoria entiendo debe tener que ver con la concurrencia de más de un usuario al ejecutarse la rutina
He probado con transacciones, sin transacciones, con la cláusula FOR UPDATE y sin ella.
Cuando tenía bloques BEGIN..COMMIT..ROOLBACK que ahora están comentados en el código, se sumaba el problema del error 'lock wait timeout exceeded' que monitoreando noté que esto se producía en la misma situación, es decir, cuando intentaba insertar un registro en la tabla hijo luego de un insert en la tabla padre.

Agradeceré cualquier orientación que me puedan dar.
Victor Hugo.
Responder Con Cita