MySQL - javi

   
Vista:

javi

Publicado por Actualizar claves foráneas (5 intervenciones) el 15/04/2008 14:28:07
Hola foro
Tengo tres tablas,
Item (idItem, idZona)
Zona (idZona)
itemZonaHorizontal (idItem, idZona, posicion)

itemZonaHorizontal tiene como clave foránea y clave primaria los atributos idItem y idZona, y luego idZona de la tabla Item es clave foránea de la tabla itemZonaHorizontal.
Intento hacer la siguiente sentencia

UPDATE Item SET idZona='B' WHERE idItem='5'

En la tabla itemZonaHoriozntal existe el par (5,B) haciendo alusión al idItem y al idZona, y sin embargo me da el siguiente fallo:

#1451 - Cannot delete or update a parent row: a foreign key constraint fails (`tiendaVirtual/ItemZonaHorizontal`, CONSTRAINT `ItemZonaHorizontal_ibfk_2` FOREIGN KEY (`idZona`) REFERENCES `Item` (`idZona`))

¿Por que?

Muchas gracias

Un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:javi

Publicado por hadrien (24 intervenciones) el 15/04/2008 14:53:57
Hola,

yo diría que es debido, precisamente, a que es una tabla ligada a otra mediante la clave foránea idZona. Una solución podría ser, añadir un "on update cascade" en la definición de tus tablas:

CREATE TABLE itemZonaHorizontal (
...
FOREIGN KEY(`idZona`) REFERENCES `Item` (`idZona`)
ON UPDATE CASCADE,
ON DELETE RESTRICT
) ENGINE = InnoDB;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:javi

Publicado por Gonzalo GC (339 intervenciones) el 15/04/2008 15:54:55
Atención a eso: "localhost" es la propia máquina donde está corriendo el server de MySQL. Esto significa que sólo sirve para ejecutar en tu propia PC.
Si están ejecutando la operación de forma remota (PC a PC o PC a Web), debe ir la dirección IP o DHCP, según el caso, que posea el server de MySQL.

El error más habitual es probar la conexión en forma local y después trasladar todo a un server y pretender que funcione igual sin cambiar la dirección del host.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:javi

Publicado por javi (5 intervenciones) el 15/04/2008 17:21:57
Hola hadriane, he probado haciendo lo que me has dicho y ahora si me permite modificarlo.

Muchas gracias a todos por interesaros por mi duda.
Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar