Экранирование имен столбцов с ключевыми словами в Postgres
Если столбец в таблице Postgres имеет имя year, как следует искать INSERT запрос для установки значения для этого столбца?
Например: INSERT INTO table (id, name, year) VALUES ( ... ); дает ошибку около слова года.
Ответ 1
Просто заключите year в двойные кавычки, чтобы остановить его интерпретацию как keyword:
INSERT INTO table (id, name, "year") VALUES ( ... );
В документации :
Существует второй тип идентификатора: идентификатор с разделителями или цитируемый идентификатор. Он формируется путем включения произвольной последовательности символы в двойных кавычках ( "). Обозначенный идентификатор всегда идентификатор, никогда не ключевое слово. Таким образом," выбрать "можно использовать для обозначения столбец или таблица с именем" выберите", тогда как выбор без кавычек будет принятое в качестве ключевого слова, и поэтому будет провоцировать ошибку синтаксического анализа, когда используется там, где ожидается имя таблицы или столбца.