Экранирование имен столбцов с ключевыми словами в Postgres

Если столбец в таблице Postgres имеет имя year, как следует искать INSERT запрос для установки значения для этого столбца?

Например: INSERT INTO table (id, name, year) VALUES ( ... ); дает ошибку около слова года.

Ответ 1

Просто заключите year в двойные кавычки, чтобы остановить его интерпретацию как keyword:

INSERT INTO table (id, name, "year") VALUES ( ... );

В документации :

Существует второй тип идентификатора: идентификатор с разделителями или цитируемый идентификатор. Он формируется путем включения произвольной последовательности символы в двойных кавычках ( "). Обозначенный идентификатор всегда идентификатор, никогда не ключевое слово. Таким образом," выбрать "можно использовать для обозначения столбец или таблица с именем" выберите", тогда как выбор без кавычек будет принятое в качестве ключевого слова, и поэтому будет провоцировать ошибку синтаксического анализа, когда используется там, где ожидается имя таблицы или столбца.