簡體   English   中英

在postgres中選擇/顯示最后插入的序列ID

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM