我试图使用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了吗?为什么它说“专栏不存在?”
最佳答案
原来这是一个大写和引号的问题。因为我想保留关系名的大小写,所以需要同时使用单引号和双引号,以便将正确的关系名传递给currval
。
我将查询更改为SELECT currval('"Concept_cid_seq"');
(注意外部的单引号),它工作正常。