[英]select/display last inserted serial id in postgres
在sql server我喜歡這樣:
insert into foo(name) values('bob')
select @@identity;
所以我得到一個查詢/標量結果顯示
如何用postgres?
獲取特定序列:
SELECT currval('name_of_your_sequence');
從最后使用的序列中獲取最后一個值:
SELECT lastval();
請查看手冊: http : //www.postgresql.org/docs/current/static/functions-sequence.html
編輯:您還可以在INSERT中使用RETURNING:
INSERT INTO foo(id, name) VALUES(DEFAULT, 'bob') RETURNING id;
一個好方法是使用RETURNING id。 這是一個使用PL / pgSQL的簡短示例:
DECLARE
nivel1 RECORD;
resultId BIGINT;
BEGIN
FOR nivel1 IN SELECT * FROM primary_table LOOP
INSERT INTO second_table(id, field2, field3) VALUES (DEFAULT, "value2", "value3") RETURNING id INTO resultId;
RAISE NOTICE 'Inserted id: %s', quote_literal(resultId);
END LOOP;
RETURN;
END
這個對我有用!
這將是
獲得診斷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;
它總是返回0,你知道這里有什么問題嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.