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 03/12/2004, 22h59   #1
Invité de passage
 
Inscription : décembre 2004
Messages : 2
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 2
Points : 0
Points : 0
Par défaut HELP creation et insertion table....??

petit probleme lors de la création d'un table étant l'association de deux autre table :
je créé : CREATE TABLE auteur(
num_auteur VARCHAR(5) PRIMARY KEY,
nom_auteur VARCHAR(20),
prenom_auteur VARCHAR(20),
date_naissance DATE
);
puis :
CREATE TABLE document (
ref_doc VARCHAR(5) PRIMARY KEY,
titre VARCHAR(50),
theme VARCHAR(40),
nbr_exemplaire int,
duree_emprunt int,
num_editeur varchar(5),
foreign key(num_editeur) REFERENCES editeur,
CHECK ( (nbr_exemplaire >=0) AND (duree_emprunt >=1))
);

Efin, je créer la table d'aasociation suivante :
CREATE TABLE ecrit(
ref_doc VARCHAR(5),
num_auteur VARCHAR(5),
FOREIGN KEY(ref_doc) REFERENCES document(ref_doc),
FOREIGN KEY(num_auteur) REFERENCES auteur(num_auteur),
CONSTRAINT ecrit_cp PRIMARY KEY(ref_doc,num_auteur)
);

J'insert des VALUES dans document et dans auteur :
INSERT INTO auteur VALUES('a0001','Hunt','Craig','10/10/75');
INSERT INTO livre VALUES('l0001','SQL pour les nuls','informatique','4','2','00023','145');

Livre est une table qui hérite de document. Jusque là pas d'erreut sauf qd j'insere des values ds la table écrit :

INSERT INTO ecrit VALUES('l0001','a0001');
J'obtient l'erreur suivante :
ERROR: insert or update on table "ecrit" violates foreign key constraint "$1"
DETAIL: Key (ref_doc)=(l0001) is not present in table "document".

Cette erreut ce produit tjs a l'inserrtion de valeur dans une table d'association. Je n'y comprend rien vu que la valeur de ref_doc se trouve bien ds la table document:!!!!
HELP!:!!

HELP!!
merci
aqwel18 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2004, 10h51   #2
Membre confirmé
 
Inscription : octobre 2003
Messages : 266
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 266
Points : 287
Points : 287
Salut,

si si, cela marche très bien. C'est simplement ta clé étrangère ref_doc qui doit avoir pour référence livre(ref_doc) et non pas document(ref_doc).

C'est tout.

@+
Krapulax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2004, 15h05   #3
Invité de passage
 
Inscription : décembre 2004
Messages : 2
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 2
Points : 0
Points : 0
Par défaut :(

non, ce n'est pas ca car je possede d'autre table qui héritent tous de document (cd, dvd....) et ds ce cas, si je met livre(ref_doc) comme tu le dis, les autres classes (cd , dvd..) ne seront plus accessible par la table ecrit!
aqwel18 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2004, 15h50   #4
Membre confirmé
 
Inscription : octobre 2003
Messages : 266
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 266
Points : 287
Points : 287
Salut,

Excuses-moi car j'avais modifié le nom de ta table document en livre car tu fais un insert dans la table livre :
Code :
INSERT INTO livre VALUES('l0001','SQL pour les nuls','informatique','4','2','00023','145');
A ce moment là, c'est cet insert qui n'est pas bon : il est fait dans la mauvaise table.
Krapulax 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 22h38.


 
 
 
 
Partenaires

Hébergement Web