2014-01-28 3 views
12

У меня есть последовательность на postgresql 9.3 внутри схемы.postgresql sequence nextval в схеме

Я могу это сделать:

ВЫБЕРИТЕ last_value, increment_by из Foo "SQ_ID";.

last_value | increment_by 
------------+-------------- 
      1 |   1 (1 fila) 

, но это не завод:

ВЫБЕРИТЕ NEXTVAL ('foo.SQ_ID');

ERROR: no existe la relación «foo.sq_id» 
LÍNEA 1: SELECT nextval('foo.SQ_ID'); 

Что не так?

В нем говорится, что не существует отношения «foo.sq_id», но оно существует.

ответ

22

Правила цитирования являются болезненными. Я думаю, что вы хотите:

SELECT nextval('foo."SQ_ID"'); 

для предотвращения прецедентного складывания SQ_ID.

+0

очень спасибо. Теперь это работает. – carlos

+0

SQL не «case fold» в SQL, двойная кавычка предназначена для обозначения объектов db seq и имен таблиц, для которых используется одиночная кавычка для обозначения статических значений строк. Они не взаимозаменяемы. выберите «поле» из «таблицы», где «поле» = «значение»; –

1
SELECT last_value, increment_by from "other_schema".id_seq; 

для добавления seq в столбец, где схема не является общедоступной, попробуйте это.

nextval('"other_schema".id_seq'::regclass) 
Смежные вопросы