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

Requêtes PostgreSQL Discussion :

Protection d'un champ dans une requette


Sujet :

Requêtes PostgreSQL

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Protection d'un champ dans une requette
    Bonjour à tous,

    Je suis actuellement en train d'interfacer une application des gestion (développé en PHP BDD Mysql) avec OPENERP (bdd Postgre sql).

    Sur la table res_partner d'Openerp il existe un champ nomé "function" qui est un champ text correspondant à la fonction professionnel du client.

    Le problème c'est que (comme dans la plus part des SGBDR) le terme "function" est également utilisé par POSTGRE pour les Fonctions.

    Du coup lorsque je fais un "Insert" ou un "Update" Postgre Sql me renvoie une erreur Message SQL: ERROR: column "function" of relation "res_partner" does not exist LINE 1: ...ng, employee, supplier,user_id,company_id,comment,function) ... ^

    Il faudrait donc que je puisse protéger le champ dans ma requète pour que ce terme ne soit pas interpréter comme étant une fonction.
    J'ai donc essayé d'entourer ce champ avec des cotes, des doubles cotes, des crochet mais il semble que ce ne soit pas cela puisque j'obtiens un message de syntax error.

    Quelqu'un serait il en mesure de me proposer une solution. Je continue de chercher, mais je n'ai encore rien trouvé.

    En vous remerciant tous par avance.

    Willliam

  2. #2
    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
    Il faut simplement mettre le terme entre guillemets. Si ça fait toujours une erreur, je t'invite à copier-coller la requête et l'erreur dans le fil de discussion.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci estofilo de réponse.

    Comme je le précise dans mon poste, j'ai essayé d'encadrer mon champ entre guillemets, entre cote ... Mais cela n'y a rien fait.

    Pour ce qui est du message je l'ai également mon mis dans mon poste en Orange

  4. #4
    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
    OK, c'est donc que la colonne orthographiée comme ça et en miniscules n'existe réellement pas, il faudrait vérifier la description de la table. D'autant plus que ce mot est en fait utilisable directement comme nom de colonne, la preuve:
    => create table testf(function int);
    CREATE TABLE

    => insert into testf values(1);
    INSERT 0 1

    => select function from testf;
    function
    ----------
    1
    (1 row)

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    J'aurai pu effectivement faire une faute de frappe, mais après vérification du nom dans ma requête et du nom de la table dans la base, il n'y a aucune erreur.

    D'autre part, lorsque je fais un SELECT function FROM res_partner_address, il n'y a aucun message d'erreur, il m'affiche correctement les données le champ existe donc bien.

    Franchement je ne comprend pas. C'est vraiment lors d'un update ou d'un insert que cela pose problème

  6. #6
    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
    D'autre part, lorsque je fais un SELECT function FROM res_partner_address, il n'y a aucun message d'erreur, il m'affiche correctement les données le champ existe donc bien.

    Franchement je ne comprend pas. C'est vraiment lors d'un update ou d'un insert que cela pose problème
    Dans ce message tu parles d'une table res_partner_address mais dans le message d'erreur que tu as posté précédemment la table s'appelle res_partner.
    Si on se limite à ça, l'explication est juste que tu te trompes de table.

  7. #7
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Quelle est la requête qui génère l'erreur ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    La requête qui génère ce message d'erreur est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO res_partner (create_uid, create_date,write_date,date,write_uid,ref,name,customer,active,lang,employee,supplier,user_id,company_id,comment,function) 
    VALUES ('1',CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,CURRENT_DATE,1,'1102001','AFPA',','TUE','TRUE','fr_FR','FALSE','FALSE','1',1,'','Assistant')

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bon et bien comment dire ..... Mille excuses.
    Je n'effectuais pas la requête sur la bonne table

    Merci quand même à ceux qui ont essayé de m'aider.

    William

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/01/2015, 08h56
  2. cherche requette pour trouver le nom des champs dans une table
    Par maverick56 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 12/07/2007, 10h28
  3. lire un champs dans une requette
    Par zouzoula dans le forum VBA Access
    Réponses: 1
    Dernier message: 04/07/2007, 23h06
  4. [langage] Comment rajouter des champs dans une liste
    Par toto_titi dans le forum Langage
    Réponses: 4
    Dernier message: 28/08/2003, 14h09
  5. Ordre des champs dans une table
    Par patapetz dans le forum Outils
    Réponses: 5
    Dernier message: 30/07/2003, 06h53

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