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

Omu*_*Omu 0 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);
Run Code Online (Sandbox Code Playgroud)

@@identity 是在sql server中最后插入的标识(serial)

如何在Postgres做同样的事情?

Luk*_*ský 5

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

INSERT INTO users (name, password) VALUES ('admin', '1') RETURNING id;
Run Code Online (Sandbox Code Playgroud)

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

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

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