PostgreSQL Sequence序列
在本节中,我们将了解 PostgreSQL 序列的工作原理、 PostgreSQL 序列的示例,并了解序列对象如何用于创建数字序列,并查看示例nextval() 函数。
我们还看到了使用CREATE SEQUENCE命令创建升序和降序序列并借助 DROP SEQUENCE命令删除序列的示例。
什么是 PostgreSQL 序列?
Sequence 是一个用于创建累进数字的生成器,可以帮助自动生成单个主键并同步各个行或表中的键。
在PostgreSQL中,序列是用户定义的模式绑定对象,它根据特定要求创建整数序列。
在 PostgreSQL 序列中,数字的顺序很重要。比如{5,6,7,8,9,10}和{10,9,8,7,6,5}是完全不同的序列。
我们正在使用CREATE SEQUENCE命令在 PostgreSQL 中生成一个序列。
PostgreSQL CREATE SEQUENCE 命令
- PostgreSQL CREATE SEQUENCE命令用于生成原始序列号生成器,其中还包括生成并设置一个新的不同的单行表名称。
- 生成器将由质疑语句的用户维护。
- PostgreSQL 序列是建立在bigint 算法上的;因此,范围从-9223372036854775808 到 9223372036854775807开始。而且我们不能超过八字节的范围
- 在 PostgreSQL 中,序列名称必须不同于类似模式中的任何其他序列、表、视图、索引或外部表。
- 该序列是在特定模式中创建的,如果先前给出了模式名称,它将在现有模式中生成。
- 生成序列后,我们可以使用currval、setval 和 nextval函数对序列进行操作。
- 生成临时序列时不能指定模式名称,因为临时序列出现在特殊模式中。
PostgreSQL CREATE SEQUENCE 的语法
PostgreSQL 创建序列的语法如下:
CREATE SEQUENCE [ IF NOT EXISTS ] sequence_name
[ AS { SMALLINT | INT | BIGINT } ]
[ INCREMENT [ BY ] increment ]
[ MINVALUE minvalue | NO MINVALUE ]
[ MAXVALUE maxvalue | NO MAXVALUE ]
[ START [ WITH ] start ]
[ CACHE cache ]
[ [ NO ] CYCLE ]
[ OWNED BY { table_name.column_name | NONE } ]
PostgreSQL 创建序列的例子
让我们看不同的例子来理解PostgreSQL CREATE SEQUENCE是如何工作的。
生成升序的例子
在下面的示例中,使用以下命令CREATE SEQUENCE命令生成新的升序序列,从20开始,增量为3。
CREATE SEQUENCE jtpsequence
INCREMENT 3
START 20;
执行上述命令后,我们会得到如下消息窗口,显示升序序列创建成功。
在这里,我们还可以使用nextval() 函数从序列中获取下一个值。
SELECT nextval('jtpsequence');
执行上述命令后,我们将得到以下输出,显示序列中的下一个值。
生成降序序列的示例
在下面的示例中,以下命令用于生成从 5 到 1 的降序序列,并带有循环选项:
CREATE SEQUENCE five
INCREMENT -1
MINVALUE 1
MAXVALUE 5
START 5
CYCLE;
执行上述命令我们会得到如下信息,显示降序序列已经成功创建到Organization数据库中。
当我们多次执行以下命令时,我们会看到数字从5、4、3、2、1 开始,然后回到 5、4、3、2、1等等:
SELECT nextval('five');
执行上述命令后,我们将得到以下输出,以降序显示序列中的值。
热门文章
优秀文章