je rencontre actuellement un probleme avec les héritages de tables et les
foreign key. Je m'explique, j'ai une table de base "Produit" qui contient les
champs "ID" et "Nom". J'ai deux tables "Moto" et "Voiture" qui hérite de la
table "Produit" et qui contient des champs propre en plus. J'ai enfin une autre
table "Prestation" qui possède un champ "Produit_ID" qui est une foreign key
sur "Produit.ID".
Je fais les inserts suivant:
INSERT INTO Produit(Nom) VALUES ('table de base');
> Ok (Produit.ID = 1)
INSERT INTO Moto(Nom) VALUES ('table moto qui hérite de Produit')
> Ok (Moto.ID = Produit.ID = 2)
Jusqu'ici tout va bien.
Maintenant si je tente d'inserer des entrées dans la table Prestation:
INSERT INTO Prestation(Produit_ID) VALUES(1);
> Ok
INSERT INTO Prestation(Produit_ID) VALUES(2);
> ERROR: insert or update in table "Prestation" violate foreign key constraint
> "Produit_ID_Fk"
> DETAIL: Key (Produit_ID)=(2) is not present in table "Prestation"
On dirait que la foreign key ne fonctionne pas sur une table hérité ! pourtant
le champ Produit.ID = 2 existe bien, c'est juste que cette ID a été crée par
l'insertion d'une entrée dans la table Moto.
D'apres mes recherches sur google, il semblerait que ceci ne soit pas encore
supporté par PostgreSQL. Quelqu'un aurait il une idée pour résoudre ce probleme
? Suis - je obliger de casser ma structure sous forme d'héritage ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Fred BROUARD - SQLpro
1) poste la structure complète de tes tables sous forme d'ordres SQL 2) voici un article sur l'héritage qui fait le point : http://sqlpro.developpez.com/heritage/herit.html" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://sqlpro.developpez.com/heritage/herit.html
A +
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
F.Julien a écrit:
Bonjour,
je rencontre actuellement un probleme avec les héritages de tables et les foreign key. Je m'explique, j'ai une table de base "Produit" qui contient les champs "ID" et "Nom". J'ai deux tables "Moto" et "Voiture" qui hérite de la table "Produit" et qui contient des champs propre en plus. J'ai enfin une autre table "Prestation" qui possède un champ "Produit_ID" qui est une foreign key sur "Produit.ID".
Je fais les inserts suivant:
INSERT INTO Produit(Nom) VALUES ('table de base');
Ok (Produit.ID = 1)
INSERT INTO Moto(Nom) VALUES ('table moto qui hérite de Produit')
Ok (Moto.ID = Produit.ID = 2)
Jusqu'ici tout va bien. Maintenant si je tente d'inserer des entrées dans la table Prestation:
INSERT INTO Prestation(Produit_ID) VALUES(1);
Ok
INSERT INTO Prestation(Produit_ID) VALUES(2);
ERROR: insert or update in table "Prestation" violate foreign key constraint "Produit_ID_Fk" DETAIL: Key (Produit_ID)=(2) is not present in table "Prestation"
On dirait que la foreign key ne fonctionne pas sur une table hérité ! pourtant le champ Produit.ID = 2 existe bien, c'est juste que cette ID a été crée par l'insertion d'une entrée dans la table Moto.
D'apres mes recherches sur google, il semblerait que ceci ne soit pas encore supporté par PostgreSQL. Quelqu'un aurait il une idée pour résoudre ce probleme ? Suis - je obliger de casser ma structure sous forme d'héritage ?
Cordialement,
F.Julien.
1) poste la structure complète de tes tables sous forme d'ordres SQL
2) voici un article sur l'héritage qui fait le point :
http://sqlpro.developpez.com/heritage/herit.html
A +
--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
F.Julien a écrit:
Bonjour,
je rencontre actuellement un probleme avec les héritages de tables et les
foreign key. Je m'explique, j'ai une table de base "Produit" qui
contient les
champs "ID" et "Nom". J'ai deux tables "Moto" et "Voiture" qui hérite de la
table "Produit" et qui contient des champs propre en plus. J'ai enfin
une autre
table "Prestation" qui possède un champ "Produit_ID" qui est une foreign
key
sur "Produit.ID".
Je fais les inserts suivant:
INSERT INTO Produit(Nom) VALUES ('table de base');
Ok (Produit.ID = 1)
INSERT INTO Moto(Nom) VALUES ('table moto qui hérite de Produit')
Ok (Moto.ID = Produit.ID = 2)
Jusqu'ici tout va bien.
Maintenant si je tente d'inserer des entrées dans la table Prestation:
INSERT INTO Prestation(Produit_ID) VALUES(1);
Ok
INSERT INTO Prestation(Produit_ID) VALUES(2);
ERROR: insert or update in table "Prestation" violate foreign key
constraint
"Produit_ID_Fk"
DETAIL: Key (Produit_ID)=(2) is not present in table "Prestation"
On dirait que la foreign key ne fonctionne pas sur une table hérité !
pourtant
le champ Produit.ID = 2 existe bien, c'est juste que cette ID a été crée
par
l'insertion d'une entrée dans la table Moto.
D'apres mes recherches sur google, il semblerait que ceci ne soit pas
encore
supporté par PostgreSQL. Quelqu'un aurait il une idée pour résoudre ce
probleme
? Suis - je obliger de casser ma structure sous forme d'héritage ?
1) poste la structure complète de tes tables sous forme d'ordres SQL 2) voici un article sur l'héritage qui fait le point : http://sqlpro.developpez.com/heritage/herit.html" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://sqlpro.developpez.com/heritage/herit.html
A +
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
F.Julien a écrit:
Bonjour,
je rencontre actuellement un probleme avec les héritages de tables et les foreign key. Je m'explique, j'ai une table de base "Produit" qui contient les champs "ID" et "Nom". J'ai deux tables "Moto" et "Voiture" qui hérite de la table "Produit" et qui contient des champs propre en plus. J'ai enfin une autre table "Prestation" qui possède un champ "Produit_ID" qui est une foreign key sur "Produit.ID".
Je fais les inserts suivant:
INSERT INTO Produit(Nom) VALUES ('table de base');
Ok (Produit.ID = 1)
INSERT INTO Moto(Nom) VALUES ('table moto qui hérite de Produit')
Ok (Moto.ID = Produit.ID = 2)
Jusqu'ici tout va bien. Maintenant si je tente d'inserer des entrées dans la table Prestation:
INSERT INTO Prestation(Produit_ID) VALUES(1);
Ok
INSERT INTO Prestation(Produit_ID) VALUES(2);
ERROR: insert or update in table "Prestation" violate foreign key constraint "Produit_ID_Fk" DETAIL: Key (Produit_ID)=(2) is not present in table "Prestation"
On dirait que la foreign key ne fonctionne pas sur une table hérité ! pourtant le champ Produit.ID = 2 existe bien, c'est juste que cette ID a été crée par l'insertion d'une entrée dans la table Moto.
D'apres mes recherches sur google, il semblerait que ceci ne soit pas encore supporté par PostgreSQL. Quelqu'un aurait il une idée pour résoudre ce probleme ? Suis - je obliger de casser ma structure sous forme d'héritage ?