Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-05-2008
victorhugo victorhugo is offline
Registrado
 
Registrado: feb 2008
Posts: 2
Poder: 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
  #2  
Antiguo 13-05-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
¿Esas 3 sentencias sqls, donde están? en un Store procedure, en unas consultas de tu aplicación, en este caso, están bajo la misma transacción?
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 13-05-2008
victorhugo victorhugo is offline
Registrado
 
Registrado: feb 2008
Posts: 2
Poder: 0
victorhugo Va por buen camino
Hola Lepe, gracias por contestar.
Las sentencias están dentro del código y en otro módulo están en un Store Procedure (igual grupo de sentecias sql). En ambos casos sucede lo mismo.
Dentro del código de la aplicación anteriormente se iniciaba con

BEGIN..
consultas...
COMMIT
if cancelar ROOLBACK

y producìa a veces el error 'look wait...'
Al comentar los BEGIN...COMMIT sucede que a veces la aplicación se congela y sucede lo comentado anteriormente (no guarda el registro en la tabla hijo).

Todos los usuarios acceden al mysql con un mismo usuario de conexión.

saludos y gracias por la ayuda.
Victor
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ventanas Padre e Hijo luxus OOP 6 31-10-2013 20:54:15
Reencuentro Padre - Hijo jcarteagaf Humor 3 30-04-2008 17:19:56
imprimir solanmente padre e hijo Camilo Impresión 12 27-07-2007 19:59:20
...carta del hijo al padre y su respuesta ... Jure Humor 0 25-04-2004 19:49:18
Padre, hijo y el taxista metomentodo obiwuan Humor 0 04-05-2003 12:59:41


La franja horaria es GMT +2. Ahora son las 22:52:21.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi