PostgreSQL setval() 函数使用指南
PostgreSQL setval()
函数重置指定序列的当前值,并返回指定的值。
setval()
语法
这里是 PostgreSQL setval()
函数的语法:
setval(sequence_name TEXT, current_value BIGINT) -> BIGINT
或
setval(sequence_name TEXT, current_value BIGINT, is_called BOOLEAN) -> BIGINT
参数
sequence_name
- 必需的。 序列的名称。
current_value
- 必需的。 为序列指定的当前值。
is_called
- 可选的。 是否调用指定的当前值。如果为
true
,则设置的当前值已被使用;如果为false
,则设置的当前值未被使用。默认值为true
。
返回值
PostgreSQL setval()
函数返回第二个参数的值,即 current_value
。
setval()
示例
首先,让我们使用 CREATE SEQUENCE
语句创建一个简单的序列生成器 my_sequence
:
DROP SEQUENCE IF EXISTS my_sequence;
CREATE SEQUENCE my_sequence START 100;
这里,我们创建了一个名称为 my_sequence
序列生成器,它的起始值是 100。
然后,让我们使用 PostgreSQL nextval()
函数将序列 my_sequence
前进一位并返回最新的值:
SELECT nextval('my_sequence');
nextval
---------
100
然后,让我们使用下面的语句将序列 my_sequence
的当前的值设置为 200,
SELECT setval('my_sequence', 200);
setval
--------
200
让我们使用 PostgreSQL nextval()
函数 获取序列 my_sequence
的下一个值:
SELECT nextval('my_sequence');
nextval
---------
201
这里,由于前面我们使用了 setval()
函数将序列的当前值设置为 200,因此,此处的 nextval()
函数返回了 201。
当然,我们也可以让序列 my_sequence
从 200 开始,而不是从 201 开始,请使用下面的语句:
SELECT setval('my_sequence', 200, false);
setval
--------
200
让我们使用 PostgreSQL nextval()
函数获取序列 my_sequence
的下一个值:
SELECT nextval('my_sequence');
nextval
---------
200