lastval()

返回nextval()最近一次返回值的函数

lastval() 是一个系统函数,用于返回当前会话中nextval()最近一次返回的值,无论调用的是哪个序列。

lastval()PostgreSQL 8.1 中被添加。

用法

lastval () → bigint

将返回调用nextval()的最后一个序列的值。

如果在当前会话中尚未调用任何序列的nextval(),则会引发错误。

lastval() 类似于MySQL的 LAST_INSERT_ID() 函数。但请注意,在 INSERTUPDATE 操作期间,使用 RETURNING 子句直接检索由nextval()生成的值通常更可靠、更高效。

变更历史

示例

lastval() 的基本用法示例

postgres=# CREATE SEQUENCE foo_seq;
CREATE SEQUENCE

postgres=# CREATE SEQUENCE bar_seq MINVALUE 99;
CREATE SEQUENCE

postgres=# SELECT nextval('bar_seq');
 nextval
---------
      99
(1 row)

postgres=# SELECT lastval();
 lastval
---------
      99
(1 row)

postgres=# SELECT nextval('foo_seq');
 nextval
---------
       1
(1 row)

postgres=# SELECT lastval();
 lastval
---------
       1
(1 row)

如果之前未调用nextval(),将引发 ERROR

postgres=# SELECT lastval();
ERROR:  lastval is not yet defined in this session

INSERTUPDATE 操作中显式返回特定序列生成的值时,请使用 RETURNING 子句,而不是 lastval()

postgres=# CREATE TABLE foo (id INT NOT NULL DEFAULT nextval('foo_seq'));
CREATE TABLE

postgres=# INSERT INTO foo VALUES (DEFAULT) RETURNING id;
 id
----
  2
(1 row)

分类

序列, 系统函数

另请参阅

currval(), setval(), nextval(), DISCARD

反馈

对于“lastval()”,请在此处 提交任何评论、建议或更正