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