setval()
是一个用于设置序列当前值的系统函数。
setval()
在 PostgreSQL 6.4 中添加。
用法
setval (regclass
,bigint
[,boolean
] ) →bigint
默认情况下,setval()
将序列的 last_value
字段设置为指定值,并将 is_called
字段设置为 true
,这意味着下次调用 nextval()
将在返回下一个值之前递增序列。
如果提供第三个参数并将其设置为 false,则下次调用 nextval()
将不会递增序列。
变更历史
- PostgreSQL 6.4
- 添加 (提交 8e9d69d6)
示例
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)
参考文献
- PostgreSQL 文档: 序列函数