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


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

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

1 87

1 ответ:

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

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

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

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