Ver Mensaje Individual
  #2 (permalink)  
Antiguo 13/08/2012, 08:09
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: 17 años, 3 meses
Puntos: 2658
Respuesta: Problemas con FK en mysql

El error que se te produce es por un error conceptual.
Una FK es una columna o conjunto de columnas que refiere a la PK de otra tabla. Pero esto significa que la FK se considera como una unidad lógica, y no como partes. La FK multicampo apunta a la PK multicampo como un todo.
En otras palabras:
Código MySQL:
Ver original
  1. CREATE TABLE direcciones
  2.     (
  3.     `dir` VARCHAR(100) NOT NULL,
  4.     `cp` INT(10) UNSIGNED NOT NULL,
  5.     `localidad` VARCHAR(50) NOT NULL,
  6.     `provincia` VARCHAR(50) NOT NULL,
  7.     PRIMARY KEY(dir,cp));
  8.  
  9. CREATE TABLE empresa(
  10.     `cifnif` VARCHAR(45) NOT NULL,
  11.     `nombre` VARCHAR(45) NOT NULL,
  12.     `codpostal` INT(10) UNSIGNED NOT NULL,
  13.     `direccion` VARCHAR(100)NOT NULL,
  14.     `telefono1` VARCHAR(9) NOT NULL,
  15.     `telefono2` VARCHAR(9) NOT NULL,
  16.     `correo` VARCHAR(45) NOT NULL,
  17.     `imagen` LONGBLOB DEFAULT NULL,
  18.     PRIMARY KEY(cifnif),
  19.     FOREIGN KEY(direccion, codpostal) REFERENCES direcciones(dir, cp));
¿Se ve la diferencia?

Por cierto: En MySQL toda sentencia (especialmente si hay más de una en el script) debe terminar con punto y coma (;).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)