Je l'ai fait en psql:
CREATE TABLE IF NOT EXISTS apiss (skey TEXT, time INTEGER, user TEXT, ip TEXT);
Je reçois
ERROR: syntax error at or near "user" LINE 1: ...BLE IF NOT EXISTS apiss (skey TEXT, time INTEGER, user TEXT,...
Je fais:
CREATE TABLE IF NOT EXISTS apiss (skey TEXT, time INTEGER, userd TEXT, ip TEXT);
Ça marche.
Notez l'utilisateurd au lieu de l'utilisateur.
Y a-t-il des restrictions sur les noms de colonne qu'une table peut avoir? (postgresql v9.1.3)
Voici un joli tableau de mots réservés dans PostgreSQL:
http://www.postgresql.org/docs/current/static/sql-keywords-appendix.html
Il est probablement préférable d'éviter simplement d'utiliser ces mots comme noms de table ou de colonne.
Une alternative, cependant, est de mettre l'identifiant entre guillemets, par exemple:
CREATE TABLE IF NOT EXISTS apiss (
skey TEXT,
time INTEGER,
"user" TEXT,
ip TEXT);
Dans mon entreprise, j'ai dû scanner une base de données entière pour les mots réservés. J'ai résolu la tâche avec l'aide de
select * from pg_get_keywords()