
04/03/2008, 05:21
|
 | Moderador criollo | | Fecha de Ingreso: noviembre-2007 Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años, 2 meses Puntos: 2658 | |
Re: Error en INSERT con innodb Generaste una dependencia cruzada, es decir la tabla comp-name depende de la tabla comp-name-access y la comp-name-access de comp-name.
Esto es un error conceptual, que es programación se denomina "abrazo mortal" (deadlock). Como cada una depende de la otra, ninguna puede actualizarse porque cada tabla en que intentes ingresar datos verifica contra la otra, como en la otra el valor no existe y rechaza el ingreso, así ad aeternum.
El tema es que una de las tablas debe ser la primaria, de la que dependan las demás. habitualmente sn las tablas en las que sus datos no dependan de datos externos, o que si los hay no son mandatorios.
Por ejemplo: Una tabla Clientes podría tener un campo que establezca que cuenta con teléfonos (muchos), ese campo bien podría ser un enter, 0 o NULL indicaría sin teléfono, otro número sería el ID del registro de todos los teléfonos en una tabla TelefonosClientes(ID,NroTel) ID se repite pero la clave es con ambos campos a la vez, por lo que jamás se repite.
NUNCA hagas este tipo de relaciones cruzadas.
La solución: Quitale la contraint a la tabla comp-name, no la necesita. |