我试图使用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"');(注意外部的单引号),它工作正常。

07-26 09:27