IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

Obligation double-quote autour des noms de champs ?


Sujet :

PostgreSQL

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 135
    Points : 53
    Points
    53
    Par défaut Obligation double-quote autour des noms de champs ?
    Bonjour,

    Lorsque j'exécute une requete, les champs doivent être entouré par des doubles cotes. "Table"."MonChamps"

    Est on réellement obligé à les utiliser ou pas? Car dans les tutos ils ne sont pas utilisées.

    Merci

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 856
    Points : 52 993
    Points
    52 993
    Billets dans le blog
    6
    Par défaut
    Absolument pas. Lisez mon cours en ligne ou mon bouquin :
    http://sqlpro.developpez.com/cours/s...age=partie1#L1
    "un nom d'objet ne peut pas être un mot réservé de SQL sauf à être utilisé avec des guillemets"*
    par exemple si par masochisme vous nommez une table SELECT ou WHERE !
    Ou plus subtilement si vous nommez une colonne DATE ou TYPE....

    A +

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 135
    Points : 53
    Points
    53
    Par défaut
    C'est bien ce que je pensais, merci de ta réponse.

    J'ai donc un souci avec soit pgAdmin , soit avec postgres car lorsque j'effectue une recherche de base du style :

    SELECT * FROM MATABLE;

    Il me met une erreur en me signalant que la relation <matable> n'existe pas.

    Or la table se nomme bien en Majuscule MATABLE

    Par contre si je met des doubles quotes, là ça fonctionne.

    Une petite idée d'où cela peut provenir?

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 856
    Points : 52 993
    Points
    52 993
    Billets dans le blog
    6
    Par défaut
    Oui, PostGreSQL ne respecte pas la norme SQL et se rend parfois sensible à la casse.
    En fait bien que vous l'ayez spécifiée en majuscule, il y a fort à parier qu'il l'ai créé en minuscule.

    Essayez donc
    A +

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Citation Envoyé par itokia Voir le message
    SELECT * FROM MATABLE;
    Il me met une erreur en me signalant que la relation <matable> n'existe pas.
    Or la table se nomme bien en Majuscule MATABLE
    Par contre si je met des doubles quotes, là ça fonctionne.
    Le problème remonte à la création de la table.
    Au lieu la créer comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE TABLE MATABLE (...
    elle a été créée comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE TABLE "MATABLE" (...
    (possiblement par pgadmin qui ajoute des guillemets en croyant bien faire).

    Or l'emploi des guillemets à la création implique qu'ils devront être utilisés systématiquement par la suite.

    Pour revenir à une situation saine, faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE "MATABLE" RENAME TO matable;
    La règle est simple: entre guillemets, un identifiant reste tel quel. Sans les guillemets, un identifiant est implicitement converti en minuscules.

  6. #6
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 135
    Points : 53
    Points
    53
    Par défaut
    Merci à vous, ça fonctionne.

    En effet Estofilo, c'était bien ça. Il va falloir que je fasse attention à ça, j'ai quand même perdu pas mal de temps sur ce petit problème.

    Heureusement qu'il existe de supers forums et des cracks comme vous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/07/2006, 15h47
  2. Pb export des noms de champ avec # ds EXCEL
    Par 31Steph dans le forum Access
    Réponses: 1
    Dernier message: 29/06/2006, 08h13
  3. [ODBC] Comment mettre à jour 2 bases ayant des noms de champs différents ???
    Par Alexlesilex dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 11/05/2006, 17h08
  4. Guillemets obligées autour des noms de champs et de tables
    Par What dans le forum Bases de données
    Réponses: 4
    Dernier message: 05/12/2005, 12h09
  5. Récupération des noms de champs d'une table
    Par Battomura dans le forum SQL
    Réponses: 2
    Dernier message: 24/03/2003, 10h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo