Foreign Key sur une partie de Primary Key
Bonjour,
J'aurais besoin de référencer un attribut vers un attribut quelconque d'une autre table (qui est en fait une sous-clef). Seulement le référencement par Foreign Key ne me permet que de référencer la clef entière de cette autre table. Et là je bloque...
Les tables sont déclarées comme suit :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
CREATE TABLE Table1 (
id INTEGER,
ligne VARCHAR2(50),
CONSTRAINT pk_Table1 PRIMARY KEY(id)
);
CREATE TABLE Table2 (
id_1 INTEGER,
id_2 INTEGER,
ligne INTEGER,
CONSTRAINT pk_Table2 PRIMARY KEY(id_1, id_2)
);
CREATE TABLE Correspondance (
id_a INTEGER,
id_b INTEGER,
CONSTRAINT pk_Correspondance PRIMARY KEY(id_a, id_b),
CONSTRAINT fk_Correspondance_Table1 FOREIGN KEY(id_a) REFERENCES Table1(id),
CONSTRAINT fk_Correspondance_Table2 FOREIGN KEY(id_b) REFERENCES Table1(id_1)
); |
Seulement, forcément, ça ne fonctionne pas...
J'ai bien essayé avec un "CHECK" mais il ne semble pas en apprécier la syntaxe :
Code:
1 2 3 4 5 6 7 8
|
CREATE TABLE Correspondance (
id_a INTEGER,
id_b INTEGER,
CONSTRAINT pk_Correspondance PRIMARY KEY(id_a, id_b),
CONSTRAINT fk_Correspondance_Table1 FOREIGN KEY(id_a) REFERENCES Table1(id),
CONSTRAINT ck_Correspondance_Table2 CHECK(id_b in Table2(id_1))
); |
Si vous savez comment faire, ça m'intéresse beaucoup !
Merci d'avance,
Loceka.