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 15/06/2005, 11h54   #1
Invité de passage
 
Inscription : mai 2005
Messages : 10
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 10
Points : 2
Points : 2
Par défaut requête postgre

Bonjour à tous,
je suis entrain de faire un prog qui construit les requêtes avec postgre et là j'ai un petit soucci , qd j'exécute mon prog il arrive à créer la table Fournisseur mais pas Facture,

CREATE TABLE Fournisseur (Code int4 NOT NULL , Nom varchar(20), Prenom varchar(20), tel_bureau varchar(10), tel_mobile varchar(10), tel_domicile varchar(10));
CREATE TABLE Facture (Code int4 NOT NULL references Client.Nom, Date date, Paye int4, constraint cleprimaire primary key (Code));
La requête a échoué: java.sql.SQLException: ERROR: Namespace "fournisseur" does not exist

merci
sarah79 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2005, 11h58   #2
Membre éclairé
 
Avatar de piff62
 
Inscription : décembre 2003
Messages : 431
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : décembre 2003
Messages : 431
Points : 362
Points : 362
Tu creer bien (ou tu as deja) une table client avant ?
Puisque tu y fais references ?
piff62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2005, 12h03   #3
Invité de passage
 
Inscription : mai 2005
Messages : 10
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 10
Points : 2
Points : 2
dans le prog test je lui donne les deux tables à creer (Fournisseur et Facture).
sarah79 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2005, 12h05   #4
Invité de passage
 
Inscription : mai 2005
Messages : 10
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 10
Points : 2
Points : 2
Par défaut Re: requête postgre

Citation:
Envoyé par sarah79
Bonjour à tous,
je suis entrain de faire un prog qui construit les requêtes avec postgre et là j'ai un petit soucci , qd j'exécute mon prog il arrive à créer la table Fournisseur mais pas Facture,

CREATE TABLE Fournisseur (Code int4 NOT NULL , Nom varchar(20), Prenom varchar(20), tel_bureau varchar(10), tel_mobile varchar(10), tel_domicile varchar(10));
CREATE TABLE Facture (Code int4 NOT NULL references Client.Nom, Date date, Paye int4, constraint cleprimaire primary key (Code));
La requête a échoué: java.sql.SQLException: ERROR: Namespace "fournisseur" does not exist

merci
désolée c'était
CREATE TABLE Facture (Code int4 NOT NULL references Fournisseur.Nom, Date date, Paye int4, constraint cleprimaire primary key (Code));
sarah79 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2005, 13h10   #5
Membre habitué
 
Inscription : mai 2002
Messages : 131
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 131
Points : 142
Points : 142
Une remarque, avant de parler des solutions : avec PostgreSQL, il est fortement déconseillé d'utiliser des majuscules dans les noms de tables, champs, index... bref, tous les objets de la base.

L'idéal serait donc de tout mettre en minuscules dans tes requêtes Malgré tout, si tu veux continuer à utiliser des majuscules, il faut que tu mettes tes noms de tables et de champs entre double-quotes : cela indiquera à PostgreSQL qu'il doit respecter la casse.

Une dernière chose, à propos de ton champ Date de type date : c'est une très mauvaise habitude d'utiliser les mots réservés pour ses tables, champs... Utilise plutôt des noms plus significatifs (ici, date_facture, par exemple)
Quentin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2005, 13h57   #6
Invité de passage
 
Inscription : mai 2005
Messages : 10
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 10
Points : 2
Points : 2
Citation:
Envoyé par Quentin
Une remarque, avant de parler des solutions : avec PostgreSQL, il est fortement déconseillé d'utiliser des majuscules dans les noms de tables, champs, index... bref, tous les objets de la base.

L'idéal serait donc de tout mettre en minuscules dans tes requêtes Malgré tout, si tu veux continuer à utiliser des majuscules, il faut que tu mettes tes noms de tables et de champs entre double-quotes : cela indiquera à PostgreSQL qu'il doit respecter la casse.

Une dernière chose, à propos de ton champ Date de type date : c'est une très mauvaise habitude d'utiliser les mots réservés pour ses tables, champs... Utilise plutôt des noms plus significatifs (ici, date_facture, par exemple)
merci pour tes conseils mais j'ai tjrs le même pb : la requête a échoué: java.sql.SQLException: ERROR: Namespace "client" does not exist
je voudrais savoir qu'est ce que ça veut dire Namespace.
merci
sarah79 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2005, 14h39   #7
Membre actif
 
Inscription : juin 2003
Messages : 209
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 209
Points : 189
Points : 189
Hello,

Dans ton create table:
Code :
CREATE TABLE Facture (Code int4 NOT NULL REFERENCES Client.Nom, Date date, Paye int4, constraint cleprimaire PRIMARY KEY (Code));
tu utilises une contrainte d'intégrité référentielle sur ton code qui doit référer Client.nom (déjà là, je ne comprends pas pourquoi code, qui est un entier, réfère Client.nom, qui est surement un varchar). Le problème c'est que ta table CLient n'est pas encore créée.... à toi de le faire avant ce create table.

A+
Bouboubou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2005, 14h49   #8
Invité de passage
 
Inscription : mai 2005
Messages : 10
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 10
Points : 2
Points : 2
Citation:
Envoyé par Bouboubou
Hello,

Dans ton create table:
Code :
CREATE TABLE Facture (Code int4 NOT NULL REFERENCES Client.Nom, Date date, Paye int4, constraint cleprimaire PRIMARY KEY (Code));
tu utilises une contrainte d'intégrité référentielle sur ton code qui doit référer Client.nom (déjà là, je ne comprends pas pourquoi code, qui est un entier, réfère Client.nom, qui est surement un varchar). Le problème c'est que ta table CLient n'est pas encore créée.... à toi de le faire avant ce create table.

A+
je ai déjà creé la table client et pourtant il m'affiche cette erreur.
sarah79 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2005, 15h35   #9
Membre actif
 
Inscription : juin 2003
Messages : 209
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 209
Points : 189
Points : 189
Dans ce cas, il faut nous donner ton script entier... avec une petite partie on ne peut rien faire...

A+
Bouboubou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2005, 17h28   #10
Membre habitué
 
Inscription : mai 2002
Messages : 131
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 131
Points : 142
Points : 142
Citation:
Envoyé par sarah79
merci pour tes conseils mais j'ai tjrs le même pb : la requête a échoué: java.sql.SQLException: ERROR: Namespace "client" does not exist
je voudrais savoir qu'est ce que ça veut dire Namespace.
merci
Oh désolé, j'avais mal lu ton message d'erreur au début, j'étais persuadé qu'il s'agissait d'une table non trouvée
En fait, la syntaxe de ta clé étrangère est erronée, elle devrait être comme ceci :
Code :
Code int4 NOT NULL REFERENCES Client (Nom)
c'est-à-dire le nom de la table, suivi du (des) champ(s) à référencer entre parenthèses. Dans ton code, tu utilisais une notation pointée que PostgreSQL interprétait comme ceci nom_namespace.nom_table.

Concernant les namespace (ou schéma dans la documentation française), voilà ce que la doc en dit
Quentin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2005, 22h04   #11
Invité de passage
 
Inscription : mai 2005
Messages : 10
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 10
Points : 2
Points : 2
merci beaucoup, ça marche
sarah79 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web