Je possede deux tables : Personne, Homme (qui hérite de personne).
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 CREATE TABLE "Personne" ( "ID" varchar(32) NOT NULL, "NomFamille" varchar(80), "Prenom1" varchar(80), CONSTRAINT "Personne_pkey" PRIMARY KEY ("ID"), CONSTRAINT "Personne_ID_key" UNIQUE ("ID") ) WITHOUT OIDS; ALTER TABLE "Personne" OWNER TO postgres; CREATE TABLE "Homme" ( "ID" varchar(32) NOT NULL, "NomFamille" varchar(80), "Prenom1" varchar(80) ) INHERITS ("Personne") WITHOUT OIDS; ALTER TABLE "Homme" OWNER TO postgres;
Maintenant je voudrais créer une table couple qui possède une clé etrangere sur l'ID de Homme.
Avec le code suivant, ca marche pas
Il me met l'erreur : ERROR: there is no unique constraint matching given keys for referenced table "Homme"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 CREATE TABLE "Couple" ( "HommeID" varchar(32), "ID" varchar(32) NOT NULL, CONSTRAINT "Couple_pkey" PRIMARY KEY ("ID"), CONSTRAINT "Couple_Homme_fkey" FOREIGN KEY ("HommeID") REFERENCES "Homme" ("ID") ON UPDATE NO ACTION ON DELETE NO ACTION ) WITHOUT OIDS; ALTER TABLE "Couple" OWNER TO postgres;
Alors que si je met
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 CREATE TABLE "Couple" ( "HommeID" varchar(32), "ID" varchar(32) NOT NULL, CONSTRAINT "Couple_pkey" PRIMARY KEY ("ID"), CONSTRAINT "Couple_Homme_fkey" FOREIGN KEY ("HommeID") REFERENCES "Personne" ("ID") ON UPDATE NO ACTION ON DELETE NO ACTION ) WITHOUT OIDS; ALTER TABLE "Couple" OWNER TO postgres;
Ca marche bien.
Pourtant je croyai qu'une table hérite de tous les champs de la table héritée. Je ne comprend pas où se trouve le problème, je sollicite donc votre aide.
Merci.
Partager