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-- Tabla1
CREATE TABLE TABLA1(
COD INTEGER NOT NULL);
-- Tabla2
CREATE TABLE TABLA2(
COD_1 INTEGER NOT NULL,
COD_2 INTEGER NOT NULL);
-- Tabla3
CREATE TABLE TABLA3(
COD_1 INTEGER NOT NULL,
COD_2 INTEGER NOT NULL,
COD_3 INTEGER NOT NULL);
ALTER TABLE TABLA1
ADD CONSTRAINT PKTABLA1 PRIMARY KEY(COD);
ALTER TABLE TABLA2
ADD CONSTRAINT PKTABLA2 PRIMARY KEY(COD_1,COD_2);
ALTER TABLE TABLA3
ADD CONSTRAINT PKTABLA3 PRIMARY KEY(COD_1,COD_2, COD_3);
ALTER TABLE TABLA2
ADD CONSTRAINT FK_TABLA2 FOREIGN KEY(COD_1)
REFERENCES TABLA1(COD)
ON UPDATE CASCADE ON DELETE CASCADE;
ALTER TABLE TABLA3
ADD CONSTRAINT FK_TABLA3 FOREIGN KEY(COD_1, COD_2)
REFERENCES TABLA2(COD_1, COD_2)
ON UPDATE CASCADE ON DELETE CASCADE;