Подтвердить что ты не робот

Ограничения имени столбца таблицы Postgres?

Я сделал это в psql:

CREATE TABLE IF NOT EXISTS apiss (skey TEXT, time INTEGER, user TEXT, ip TEXT);

Я получаю

ERROR:  syntax error at or near "user" LINE 1: ...BLE IF NOT EXISTS apiss (skey TEXT, time INTEGER, user TEXT,...

Я делаю:

CREATE TABLE IF NOT EXISTS apiss (skey TEXT, time INTEGER, userd TEXT, ip TEXT);

Это работает.
Обратите внимание на userd вместо пользователя.

Существуют ли ограничения на имена столбцов, которые может иметь таблица?
(postgressql v9.1.3)

4b9b3361

Ответ 1

Здесь хорошая таблица зарезервированных слов в PostgreSQL:
http://www.postgresql.org/docs/current/static/sql-keywords-appendix.html

Вероятно, лучше всего просто избегать использования этих слов в виде имен таблиц или столбцов.
Альтернативой, однако, является включение идентификатора в двойные кавычки, например:

CREATE TABLE IF NOT EXISTS apiss (
    skey TEXT, 
    time INTEGER, 
    "user" TEXT, 
    ip TEXT);

Ответ 2

В моей компании мне пришлось сканировать всю базу данных для зарезервированных слов. Я решил задачу с помощью

select * from pg_get_keywords()