Функция currval в PostgreSQL жалуется, что «столбец не существует» - PullRequest
6 голосов
/ 02 ноября 2011

Я пытаюсь использовать функцию currval PostgreSQL для возврата последнего вставленного идентификатора строки таблицы с именем Concept.Concept имеет серийный первичный ключ с именем cid, и была автоматически сгенерированная последовательность с именем Concept_cid_seq.

Я пытаюсь выполнить следующее утверждение и получаю ошибку:

SELECT currval("Concept_cid_seq");
ERROR:  column "Concept_cid_seq" does not exist
LINE 1: SELECT currval("Concept_cid_seq");
                       ^

********** Error **********

ERROR: column "Concept_cid_seq" does not exist
SQL state: 42703
Character: 16

Но когда я запускаю запрос:

SELECT * from "Concept_cid_seq";

я получаю таблицу с одной строкой (какЯ бы ожидал), показывая столбцы, такие как last_value, start_value и т. Д ...

Что мне здесь не хватает?Я передаю неверную информацию в currval?Почему говорится, что «столбец не существует?»

1 Ответ

5 голосов
/ 03 ноября 2011

Оказывается, это была проблема с заглавными буквами и кавычками. Поскольку я хотел сохранить заглавные буквы имени отношения, мне нужно было использовать и одинарные и двойные кавычки, чтобы передать правильное имя отношения в currval.

Я изменил запрос на SELECT currval('"Concept_cid_seq"'); (обратите внимание на внешние одинарные кавычки), и он работал правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...