Signaler

Créer 2 tables avec des clés etrangère [Résolu]

Posez votre question smarty08 64Messages postés lundi 29 septembre 2008Date d'inscription 2 novembre 2017 Dernière intervention - Dernière réponse le 2 nov. 2017 à 06:57 par smarty08
salut à tous,
S'il vous plait,J'ai un souci avec ma base de donnée. J'aimerai créer 2 tables avec des clées etrangère,mais ca ne marche pas. J'ai besoin d'aide. Voici ci dessous ma
requete.Merci d'avance :

create table question(
Qid int not null primary key,
Accepted_Aid int,
Owner_Id int,
Creation_Date text,
Last_Activity_Date text,
Score int,
View_Count int,
Answer_Count int,
Comment_Count int,
Favorite_Count int);
foreign key (Accepted_Aid) references answer (Aid));

create table answer(
Aid int not null primary key,
Parent_Qid int,
Owner_Id int,
Creation_Date text,
Last_Activity_Date text,
Score int,
Comment_Count int,
foreign key (Parent_Qid) references question (Qid));



EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).

Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.
Jordane45
Utile
+1
plus moins
c'est normal, tu fais référence à une table qui n'existe pas encore;
donc créer ta clé étrangère après avoir créer ta table :

create table question(
QID int not null primary key,
Accepted_Aid int,
Owner_Id int,
Creation_Date text,
Last_Activity_Date text,
Score int,
View_Count int,
Answer_Count int,
Comment_Count int,
Favorite_Count int);

create table answer(
AID int not null primary key,
Parent_Qid int,
Owner_Id int,
Creation_Date text,
Last_Activity_Date text,
Score int,
Comment_Count int,
foreign key (Parent_Qid) references question (QID));

ALTER TABLE public.question
ADD CONSTRAINT question_parent_qid_fkey FOREIGN KEY (Accepted_Aid)
REFERENCES public.answer (aid);


voili,voilou.
mets un résolu si cela convient... cela servira à d'autres.
smarty08 64Messages postés lundi 29 septembre 2008Date d'inscription 2 novembre 2017 Dernière intervention - 30 oct. 2017 à 20:38
merci pour ton aide Trauqnej. J'ai suivi ta rocedure,mais au moment d'ajout des données dans ma BD,j'ai l'erreur suivante :

<<<< insert or update on table "question" violates foreign key constraint "question_parent_qid_fkey"
DETAIL: Key (accepted_aid)=(7) is not present in table "answer".>>>>

je comprend pas trop
Répondre
yg_be 3752Messages postés lundi 9 juin 2008Date d'inscription ContributeurStatut 9 novembre 2017 Dernière intervention - 31 oct. 2017 à 09:46
bonjour, peut-être choisir AID ou aid, pas mélanger les deux?
Répondre
smarty08 64Messages postés lundi 29 septembre 2008Date d'inscription 2 novembre 2017 Dernière intervention - 31 oct. 2017 à 20:29
ca me retourne toujours le meme message d'erreur.

insert or update on table "question" violates foreign key constraint "question_parent_qid_fkey"
DETAIL: Key (accepted_aid)=(7) is not present in table "answer".


n'ya t il pas un autre moyen de faire mon update pour insérer la contrainte de clé etrangère?
pourquoi <<<question_parent_qid_fkey>>> . Ce nom influence - t- il ma clé étrangére? Merci de tout coeur pour l'aide
Répondre
yg_be 3752Messages postés lundi 9 juin 2008Date d'inscription ContributeurStatut 9 novembre 2017 Dernière intervention - 31 oct. 2017 à 21:13
le message me semble clair: il n'y a pas de réponse correspondant à la question que tu crées.
se pourrait-il que tu essaies de créer une question sans réponse? il me semble que tu as créé une contrainte qui empêche cela. et donc le message t'informe que tu fais quelque chose d'interdit.
Répondre
smarty08 64Messages postés lundi 29 septembre 2008Date d'inscription 2 novembre 2017 Dernière intervention - 2 nov. 2017 à 06:57
merci de tout coeur. J'etait en tord.vote premier message est la solution à mon problème.
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !