我有一张桌子:
CREATE TABLE names (id serial,name varchar(20))
我想从该表中“最后插入的id”,而不使用插入时的RETURNING id.似乎有一个功能CURRVAL()
,但我不明白如何使用它.
我尝试过:
SELECT CURRVAL() AS id FROM names_id_seq SELECT CURRVAL('names_id_seq') SELECT CURRVAL('names_id_seq'::regclass)
但它们都不起作用.如何使用currval()获取最后插入的ID?
如果您创建一个列作为串行Postgresql自动创建一个序列.
原文链接:https://www.f2er.com/postgresql/192430.html序列的名称是自动生成的,并且始终是tablename_columnname_seq,在您的情况下,序列名称为names_id_seq.
postgres=> CREATE TABLE names in schema_name (id serial,name varchar(20)); CREATE TABLE postgres=> insert into names (name) values ('Arthur Dent'); INSERT 0 1 postgres=> select currval('names_id_seq'); currval --------- 1 (1 row) postgres=>
您也可以使用pg_get_serial_sequence()代替硬编码序列名称:
select currval(pg_get_serial_sequence('names','id'));
这样你就不需要依赖Postgres使用的命名策略了.
或者,如果您根本不想使用序列名称,请使用lastval()