Ver Mensaje Individual
  #2 (permalink)  
Antiguo 14/09/2013, 06:19
Avatar de gnzsoloyo
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, 5 meses
Puntos: 2658
Respuesta: Error al relacionar claves foraneas en Clave compuesta

Empecemos por el principio: Postea la sentencia con que quieres agregar esas constraint, y en especial postea el CREATE TABLE de cada una de las tres tablas.
Anticipándome a tu respuesta, debes repasar la lista de condiciones necesarias y obligatorias para poder definir una FK:
1) La FK sólo puede apuntar a una PK, y en MySQL puede (alternativamente), hacerlo a un campo definido como UNIQUE.
2) El campo usado como FK deben ser del mismo tipo, longitud y collation (si es de caracteres) que el campo PK de la tabla referida.
3) SI una KF apunta a una tabla cuya PK es compuesta (más de un campo en la definición de la PK), la FK debe ser creada con la misma cantidad de campos, y en el mismo orden de la PK referida.
4) Los charset de las tablas deben ser idénticos.
5) Todas las tablas deben existir en el mismo esquema de bases de datos.

Y finalmente, un detalle poco verificado:
6) Si estás intentando definir una FK en una tabla que ya contiene registros, debes verificar que no existan inconsistencias entre los datos que la tabla contiene, respecto de la FK que estás tratando de definir.
Esto último implica que si hay al menos un registro que contenga un valor nulo, o que no exista entre las PK de la tabla que se referenciará, MySQL no te admitirá crear la FK.
Siempre que en un DBMS se crea una FK, el sistema verifica que los datos existentes cumplan con la constraint a crear. Siempre.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)