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

creacion tabla con claves foraneas

Estas en el tema de creacion tabla con claves foraneas en el foro de Mysql en Foros del Web. Hola! Tengo una tabla, que la clave primaria es compuesta,cuyo script de creacion es: CREATE TABLE `calendarioFutbol` ( `JORNADA` int(11) NOT NULL, `IDPARTIDO` int(11) NOT ...
  #1 (permalink)  
Antiguo 07/07/2009, 01:07
 
Fecha de Ingreso: septiembre-2006
Mensajes: 114
Antigüedad: 17 años, 7 meses
Puntos: 1
creacion tabla con claves foraneas

Hola!
Tengo una tabla, que la clave primaria es compuesta,cuyo script de creacion es:

CREATE TABLE `calendarioFutbol` (
`JORNADA` int(11) NOT NULL,
`IDPARTIDO` int(11) NOT NULL,
`FECHA` DATE DEFAULT NULL,
`IDEQUIPOLOCAL` int(11) NOT NULL,
`IDEQUIPOVISITANTE` int(11) NOT NULL,
PRIMARY KEY (`JORNADA`,`IDPARTIDO`),
KEY `FK_calendarioFutbol_equipo1` (`IDEQUIPOLOCAL`),
CONSTRAINT `FK_clasificacionFutbol_local` FOREIGN KEY (`IDEQUIPOLOCAL`) REFERENCES `equipo` (`IDEQUIPO`) ON DELETE CASCADE ON UPDATE CASCADE,
KEY `FK_calendarioFutbol_equipo2` (`IDEQUIPOVISITANTE`),
CONSTRAINT `FK_clasificacionFutbol_visitante` FOREIGN KEY (`IDEQUIPOVISITANTE`) REFERENCES `equipo` (`IDEQUIPO`) ON DELETE CASCADE ON UPDATE CASCADE
)ENGINE=InnoDB DEFAULT CHARSET=latin1;

A esta tabla la quiero referenciar desde otra tabla, yo creo q el script de creacion de la otra tabla deberia ser:

CREATE TABLE `resultadoFutbol` (
`IDRESULTADO` int(11) NOT NULL,
`GOLESLOCAL` int(11) NOT NULL,
`GOLESVISITANTE` int(11) NOT NULL,
`JORNADA` int(11) NOT NULL,
`IDPARTIDO` int(11) NOT NULL,
PRIMARY KEY (IDRESULTADO),
KEY `FK_resultadoFutbol_jornada` (`JORNADA`),
CONSTRAINT `FK_resultadoFutbol_jornada` FOREIGN KEY (`JORNADA`) REFERENCES `calendarioFutbol` (`JORNADA`) MATCH SIMPLE ON DELETE CASCADE ON UPDATE CASCADE,
KEY `FK_resultadoFutbol_partido` (`IDPARTIDO`),
CONSTRAINT `FK_resultadoFutbol_partido` FOREIGN KEY (`IDPARTIDO`) REFERENCES `equipo` (`IDPARTIDO`) MATCH SIMPLE ON DELETE CASCADE ON UPDATE CASCADE
)ENGINE=InnoDB DEFAULT CHARSET=latin1;

Pero me da un error (errno 150). Alguna sugerencia. Muchas gracias.
  #2 (permalink)  
Antiguo 07/07/2009, 05:15
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: creacion tabla con claves foraneas

Cita:
KEY `FK_resultadoFutbol_jornada` (`JORNADA`),
CONSTRAINT `FK_resultadoFutbol_jornada` FOREIGN KEY (`JORNADA`) REFERENCES `calendarioFutbol` (`JORNADA`) MATCH SIMPLE ON DELETE CASCADE ON UPDATE CASCADE,
La creación de las PK y FK tienen ciertas condiciones que no se pueden violar: Una FK debe apuntar a la clave completa, no a una parte de ella, y estás creando en la segunda tabla una FK que no cumple con eso, ya que la PK de la primera es(`JORNADA`,`IDPARTIDO`).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 07/07/2009, 08:49
 
Fecha de Ingreso: septiembre-2006
Mensajes: 114
Antigüedad: 17 años, 7 meses
Puntos: 1
Respuesta: creacion tabla con claves foraneas

Muchas gracias por tu respuesta, ya lo he conseguido solucionar, pensaba que había que crear una clave foránea por cada parte.
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 13:47.