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');  

执行上述命令后,我们将得到以下输出,以降序显示序列中的值。

热门文章

优秀文章