PostgreSQL
La base de données la plus sophistiquée au monde.

Ouverture de session

Navigation

Contactez-nous

Administration du site :
"equipe chez postgresqlfr point org"

Contact presse :
"fr chez postgresql point org"

Contact association :
"bureau chez postgresqlfr point org"

Questions PostgreSQL :
 IRC :
  serveur irc.freenode.net
  canal #postgresqlfr

Recherche

Accéder aux archives

« Octobre 2008  
Lun Mar Mer Jeu Ven Sam Dim
  2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31  

Syndication

Flux XML

Sondage

Quelle est la version de PostgreSQL la plus répandue sur vos serveurs ?
8.3
10%
8.2
42%
8.1
40%
8.0
2%
7.4
6%
7.3 ou antérieure
0%
Nombre de votes: 48

Syntaxe SQL de PostgreSQL

Technique - général | Syntaxe SQL de PostgreSQL

Par Greg Szczap le 05/07/2007 - 13:00

Bonjour,

Je suis un nouvel utilisateur de PostgreSQL / PostGIS.

Mon problème est le suivant, j'ai une clause d'INSERT générée automatiquement par mon application qui est

INSERT INTO public.test(ID_TEST,NOM,GEOM) VALUES(1,'test',NULL);.

Cette requĂŞte ne fonctionne pas Ă  cause d'une erreur de syntaxe.

La requĂŞte qui fonctionne est

INSERT INTO public.test("ID_TEST","NOM","GEOM") VALUES(1,'test',NULL);.

Est-ce normal ou y a t'il un problème de paramétrage sur la base de données?

Merci d'avance.

Options d'affichage des commentaires

Sélectionnez la méthode d'affichage des commentaires que vous préférez, puis cliquez sur "Sauvegarder les paramètres" pour activer vos changements.

RE:Syntaxe SQL de Postgres

syracine/ = 5 Juillet, 2007 - 14:11

Il m'est arrivé la même chose lorsque j'ai importé des tables venant d'Access via OBDC. J'étais obligé de mettre les "guillemets" dans mes requêtes SQL pour accéder à mes champs.

Le seul moyen que j'ai trouvé pour résoudre ce problème est de renommer les champs.

ALTER TABLE public.test
RENAME COLUMN "ID_TEST" TO ID_TEST;

Cordialement
Sylvain


Merci, ca a bien fonctionné.

Greg Szczap/ = 6 Juillet, 2007 - 09:53

Merci, ca a bien fonctionné.

Cordialement
Grégori


Le pourquoi du comment

ioguix/ = 6 Juillet, 2007 - 11:11

A noter que cela s'explique très facilement :
PostgreSQL par défaut crée les différents attributs de vos bases en minuscule SAUF si au moment de la création vous les mettez entre "guillemet", ce qui implique que vous fassiez toujours références à ces attributs avec leurs guillemets.

Donc, la commande de syracine :

ALTER TABLE public.test
RENAME COLUMN "ID_TEST" TO ID_TEST;

est en fait exécutée de cette façon :

ALTER TABLE public.test
RENAME COLUMN "ID_TEST" TO id_test;

de mĂŞme, l'insert :

INSERT INTO public.test(ID_TEST,NOM,GEOM)

devient :

INSERT INTO public.test(id_test,nom,geom)

Pour plus d'info, cf. sql-syntax

--
Guillaume de Rorthais


© PostgreSQLFr, tous droits rĂ©servĂ©s.
Site déclaré à la CNIL sous le numéro 1074678, conformément à la Loi en vigueur.