Salut,
voila j'ai donc une table ordi :
une table composant (parent) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 create table ORDI ( ORDIID 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 create table COMPOSANT ( COMPOSANTID SERIAL not null PRIMARY KEY);
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 CPU ( CPUVITESSE INT4 null) INHERITS (composant);
Bon voila pour la base.
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);
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 :
j'obtient bien tous mes composant inséré via la table CPU.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT * FROM COMPOSANT;
Ma question est :
S'agit-il d'un bug de Postgres ? Ou ai-je foiré quelque chose ?
Partager