在postgres中选择/显示最后插入的序列ID

Omu*_*Omu 7 sql sql-server postgresql

在sql server我喜欢这样:

insert into foo(name) values('bob')
select @@identity;
Run Code Online (Sandbox Code Playgroud)

所以我得到一个查询/标量结果显示

如何用postgres?

Fra*_*ens 23

获取特定序列:

SELECT currval('name_of_your_sequence');
Run Code Online (Sandbox Code Playgroud)

从最后使用的序列中获取最后一个值:

SELECT lastval();
Run Code Online (Sandbox Code Playgroud)

请查看手册:http://www.postgresql.org/docs/current/static/functions-sequence.html

编辑:您还可以在INSERT中使用RETURNING:

INSERT INTO foo(id, name) VALUES(DEFAULT, 'bob') RETURNING id;
Run Code Online (Sandbox Code Playgroud)


SQL*_*ace 2

这将是

获取诊断 YourParam = RESULT_OID;

请参阅此处http://www.postgresql.org/docs/8.2/static/plpgsql-statements.html 向下滚动到37.6.6。获取结果状态

提问者编辑: 我尝试过这个:

create or replace function aaa() returns int as $$ 
declare 
a int;
begin
insert into oameni values(default, 'aaa');
get diagnostics a = result_oid;
return a;
end;
$$ language plpgsql;
Run Code Online (Sandbox Code Playgroud)

它总是返回 0,你知道这里出了什么问题吗?