模式中的postgresql序列nextval

car*_*los 32 postgresql postgresql-9.3

我在架构内的postgresql 9.3上有一个序列.

我可以做这个:

从foo中选择last_value,increment_by."SQ_ID";

last_value | increment_by
------------+--------------
          1 |            1 (1 fila)
Run Code Online (Sandbox Code Playgroud)

但这不起作用:

SELECT nextval('foo.SQ_ID');

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

怎么了 ?

它说不存在关系«foo.sq_id»,但它存在.

Cra*_*ger 65

引用规则很痛苦.我想你想要:

SELECT nextval('foo."SQ_ID"');
Run Code Online (Sandbox Code Playgroud)

防止外壳折叠SQ_ID.

  • SQL 不会“大小写折叠”,在 SQL 中,双引号用于表示数据库对象 seq 和表名称,单引号用于表示静态字符串值。它们不可互换。从“表”中选择“字段”,其中“字段”=“值”; (2认同)

小智 6

SELECT last_value, increment_by from "other_schema".id_seq;
Run Code Online (Sandbox Code Playgroud)

要将seq添加到架构不公开的列,请尝试此操作.

nextval('"other_schema".id_seq'::regclass)
Run Code Online (Sandbox Code Playgroud)