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()

反馈

提交任何关于 "lastval()" 的评论、建议或更正 此处