Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL > Requêtes
Requêtes Forum d'entraide sur les requêtes SQL spécifiques à PostgreSQL, les triggers, les vues, etc.
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 10/02/2011, 12h24   #1
Invité de passage
 
william langlais
Inscription : février 2011
Messages : 5
Détails du profil
Informations personnelles :
Nom : william langlais

Informations forums :
Inscription : février 2011
Messages : 5
Points : 0
Points : 0
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
r2defi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 14h00   #2
Modérateur
 
Inscription : octobre 2008
Messages : 1 505
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 1 505
Points : 2 034
Points : 2 034
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.
estofilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 14h05   #3
Invité de passage
 
william langlais
Inscription : février 2011
Messages : 5
Détails du profil
Informations personnelles :
Nom : william langlais

Informations forums :
Inscription : février 2011
Messages : 5
Points : 0
Points : 0
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
r2defi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 14h19   #4
Modérateur
 
Inscription : octobre 2008
Messages : 1 505
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 1 505
Points : 2 034
Points : 2 034
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:
Citation:
=> create table testf(function int);
CREATE TABLE

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

=> select function from testf;
function
----------
1
(1 row)
estofilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 14h56   #5
Invité de passage
 
william langlais
Inscription : février 2011
Messages : 5
Détails du profil
Informations personnelles :
Nom : william langlais

Informations forums :
Inscription : février 2011
Messages : 5
Points : 0
Points : 0
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
r2defi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 15h05   #6
Modérateur
 
Inscription : octobre 2008
Messages : 1 505
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 1 505
Points : 2 034
Points : 2 034
Citation:
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.
estofilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 15h07   #7
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 992
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 10 992
Points : 18 243
Points : 18 243
Envoyer un message via MSN à CinePhil
Quelle est la requête qui génère l'erreur ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 15h23   #8
Invité de passage
 
william langlais
Inscription : février 2011
Messages : 5
Détails du profil
Informations personnelles :
Nom : william langlais

Informations forums :
Inscription : février 2011
Messages : 5
Points : 0
Points : 0
La requête qui génère ce message d'erreur est la suivante:
Code :
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')
r2defi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 15h29   #9
Invité de passage
 
william langlais
Inscription : février 2011
Messages : 5
Détails du profil
Informations personnelles :
Nom : william langlais

Informations forums :
Inscription : février 2011
Messages : 5
Points : 0
Points : 0
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
r2defi 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 11h47.


 
 
 
 
Partenaires

Hébergement Web