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()" 的任何评论、建议或更正 此处