Ver Mensaje Individual
  #10 (permalink)  
Antiguo 27/11/2009, 15:49
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: ayuda urgente foreign key!!!

Una FK es un campo o conjunto de campos de una tabla que relacionan a esa tabla con otra a través de su clave primaria.
Eso está claro . ¿No?
Ahora bien, si una clave está compuesta por más de un campo, la FK también debe estar compuesta por más de un campo, de modo que correspondan en cantidad, tipo de columna y orden.
Ese es el error.

Siguiendo tu ejemplo:

Código sql:
Ver original
  1. -- Tabla1
  2. CREATE TABLE TABLA1(
  3. COD INTEGER NOT NULL);
  4.  
  5. -- Tabla2
  6. CREATE TABLE TABLA2(
  7. COD_1 INTEGER NOT NULL,
  8. COD_2 INTEGER NOT NULL);
  9.  
  10. -- Tabla3
  11. CREATE TABLE TABLA3(
  12. COD_1 INTEGER NOT NULL,
  13. COD_2 INTEGER NOT NULL,
  14. COD_3 INTEGER NOT NULL);
  15.  
  16. ALTER TABLE TABLA1
  17. ADD CONSTRAINT PKTABLA1 PRIMARY KEY(COD);
  18.  
  19. ALTER TABLE TABLA2
  20. ADD CONSTRAINT PKTABLA2 PRIMARY KEY(COD_1,COD_2);
  21.  
  22. ALTER TABLE TABLA3
  23. ADD CONSTRAINT PKTABLA3 PRIMARY KEY(COD_1,COD_2, COD_3);
  24.  
  25. ALTER TABLE TABLA2
  26. ADD CONSTRAINT FK_TABLA2 FOREIGN KEY(COD_1)
  27. REFERENCES TABLA1(COD)
  28. ON UPDATE CASCADE ON DELETE CASCADE;
  29.  
  30. ALTER TABLE TABLA3
  31. ADD CONSTRAINT FK_TABLA3 FOREIGN KEY(COD_1, COD_2)  
  32. REFERENCES TABLA2(COD_1, COD_2)
  33. ON UPDATE CASCADE ON DELETE CASCADE;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 27/11/2009 a las 15:54