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 :
Seulement, forcément, ça ne fonctionne pas...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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) );
J'ai bien essayé avec un "CHECK" mais il ne semble pas en apprécier la syntaxe :
Si vous savez comment faire, ça m'intéresse beaucoup !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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)) );
Merci d'avance,
Loceka.
Partager