如何保存Postgres中的最后一个序列值?

时间:2010-09-10 06:11:56

标签: sql sql-server postgresql

这就是我在SQL Server中的做法:

insert into users(name, password) values('admin', '1');
declare @id int;
set @id = @@identity;
insert into usersroles values(@id, 1);
insert into usersroles values(@id, 2);

@@identity 在sql server中最后插入的标识(序列号)

如何在Postgres中做同样的事情?

2 个答案:

答案 0 :(得分:5)

最简单的方法是使用INSERT的RETURNING子句:

INSERT INTO users (name, password) VALUES ('admin', '1') RETURNING id;

这将返回包含指定ID的一行。

另一个选择是在插入users表后使用currval函数:

SELECT currval('users_id_seq');

答案 1 :(得分:1)

来自intertubes:

  INSERT INTO Table1 (...)
    VALUES (...);

  GET DIAGNOSTICS res_oid = RESULT_OID;

  SELECT INTO ...
    FROM Table1 t
    WHERE t.oid = res_oid;