setval()

用于设置序列当前值的一个函数

setval() 是一个用于设置序列当前值的系统函数。

setval() 函数于 PostgreSQL 6.4 中添加。

用法

setval ( regclass, bigint [, boolean ] ) → bigint

默认情况下,setval() 会将序列的 last_value 字段设置为指定的值,并将其 is_called 字段设置为 true,这意味着下一次调用 nextval() 时,会在返回下一个值之前先推进序列。

如果提供了第三个参数并将其设置为 false,则下一次调用 nextval() 时不会推进序列。

变更历史

示例

setval() 的基本用法示例

postgres=# CREATE SEQUENCE foo_seq;
CREATE SEQUENCE

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

postgres=# SELECT setval('foo_seq', 99);
 setval 
--------
     99
(1 row)

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

不推进序列地调用 setval()

postgres=# SELECT setval('foo_seq', 999, false);
 setval 
--------
    999
(1 row)

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

无法将序列设置为其最小值或最大值之外的值

postgres=# CREATE SEQUENCE bar_seq MINVALUE 99;
CREATE SEQUENCE

postgres=# SELECT setval('bar_seq', 1);
ERROR:  setval: value 1 is out of bounds for sequence "bar_seq" (99..9223372036854775807)

分类

序列, 系统函数

另请参阅

lastval(), currval(), nextval()

反馈

提交关于“setval()”的任何评论、建议或更正请 在此处进行。