Salut,

voila j'ai donc une table ordi :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
create table ORDI (
ORDIID               SERIAL               not null          PRIMARY KEY);
une table composant (parent) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
create table COMPOSANT (
COMPOSANTID          SERIAL               not null          PRIMARY KEY);
des enfants de composant (par ex cpu):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
create table CPU (
CPUVITESSE           INT4                 null)
INHERITS (composant);
et une table intermédiaire entre composant et ordi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
create table possede(
COMPOSANTID          INT4                 not null          REFERENCES composant,
ORDIID               INT4                 not null          REFERENCES ordi);
Bon voila pour la base.

Mon pb maintenant :

si j'insère un composant et un ordi puis un INSERT dans ma table intermèdiare POSSEDE, la pas de pb.

Maintenant si j'insère un CPU, qui va me créer un composantid dans la table cpu et par conséquent dans la table composant(lien d'heritage) puis que je relie a ordi via possede, j'ai alors une erreur me disant que la clef étrangère possede_composantid ne peux être créer car elle fait référence a une clef ki n'existe pas. Cest un peu comme si le composantid n'etait que l'id de cpu et pas de composant.
Alors que lorsque je fait un :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
SELECT * FROM COMPOSANT;
j'obtient bien tous mes composant inséré via la table CPU.

Ma question est :

S'agit-il d'un bug de Postgres ? Ou ai-je foiré quelque chose ?