我正在尝试使用PostgreSQL的currval
函数来返回名为Concept
的表的最后插入行id。 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?为什么说“专栏不存在?”
答案 0 :(得分:5)
事实证明,这是大写和报价的问题。因为我想保留关系名称的大小写,所以我需要使用 单个和双引号,以便将正确的关系名称传递给currval
。
我将查询更改为SELECT currval('"Concept_cid_seq"');
(请注意外部单引号)并且它可以正常工作。