Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/06/2004, 16h06   #1
Invité régulier
 
Inscription : juillet 2002
Messages : 20
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 20
Points : 8
Points : 8
Par défaut [Clé étrangère] Référence 1 seul champ d'une clé double...

Salut,
Voila mon pb:
J'ai une table Famille_Produit avec une clé primaire double (2 champs) et je veux ne référencer qu'un de ces champs dans ma clé étrangère d'une table Produit.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
CREATE TABLE produit (
    id_produit INT4 DEFAULT NEXTVAL('seq_id_produit') NOT NULL,
    id_famille_produit INT4 NOT NULL,
    nom_article VARCHAR(40),
    PRIMARY KEY (id_produit)
);
CREATE TABLE famille_produit (
    id_famille_produit INT4 DEFAULT NEXTVAL('seq_id_famille') NOT NULL,
    id_langue INT4 NOT NULL,
    nom_famille VARCHAR(40),
    PRIMARY KEY (id_famille_produit, id_langue)
);
ALTER TABLE produit
    ADD FOREIGN KEY (id_famille_produit) REFERENCES famille_produit (id_famille_produit);
Réponse :
Code :
1
2
 
ERROR:  UNIQUE constraint matching given KEYS FOR referenced TABLE "famille_produit" NOT found
y a t'il un moyen de "forcer" la clé étrangère?
k-reen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2004, 13h18   #2
Membre habitué
 
Inscription : avril 2004
Messages : 94
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 94
Points : 102
Points : 102
Pouvez vous essayer ça :
Code :
ALTER TABLE produit ADD COLUMN id_famille_produit INT4 REFERENCES famille_produit (id_famille_produit);
En effet, le champ id_famille_produit seul, n'est pas cle de la table famille_produit et ne peut donc pas être clé etrangère dans une autre table.
GeantVert13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2004, 13h22   #3
Membre habitué
 
Inscription : avril 2004
Messages : 94
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 94
Points : 102
Points : 102
Ou alors directement lors de la création de la table

Code :
1
2
3
4
5
6
CREATE TABLE produit (
    id_produit INT4 DEFAULT NEXTVAL('seq_id_produit') NOT NULL,
    id_famille_produit INT4 NOT NULL REFERENCES famille_produit(id_famille_produit),
    nom_article VARCHAR(40),
    PRIMARY KEY (id_produit)
);
GeantVert13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h11.


 
 
 
 
Partenaires

Hébergement Web