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 : 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)
);
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 : 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))
);
Si vous savez comment faire, ça m'intéresse beaucoup !

Merci d'avance,
Loceka.