全部产品
Search
文档中心

云原生数据库 PolarDB:CREATE SEQUENCE

更新时间:Jul 27, 2023

本文介绍创建不同类型Sequence的方法。

New Sequence

语法

CREATE [NEW] SEQUENCE <name>
[ START WITH <numeric value> ]
[ INCREMENT BY <numeric value> ]
[ MAXVALUE <numeric value> ]
[ CYCLE | NOCYCLE ]

参数说明

参数

说明

START WITH

New Sequence的起始值,若未指定,则默认起始值为1。

INCREMENT BY

New Sequence每次增⻓时的增量值(或称为间隔值、步长),若未指定,则默认值为1。

MAXVALUE

New Sequence允许的最大值,必须为正整数。若未指定,则默认值为有符号长整型(Signed BIGINT)的最大值,即9223372036854775807。

CYCLE或NOCYCLE

两个参数只能选择其中一个,说明如下:

  • CYCLE:当New Sequence的值增长到最大值后,允许从起始值开始重新循环。

  • NOCYCLE:当New Sequence的值增长到最大值后,不允许从起始值开始重新循环,再分配会报错,如果参数未指定,默认为NOCYCLE。

说明

如果未指定类型关键字,在AUTO模式数据库中默认创建New Sequence,DRDS模式数据库不支持创建New Sequence。

示例

创建一个New Sequence,起始值是1000:

CREATE NEW SEQUENCE newseq START WITH 1000;

创建一个New Sequence,起始值为1,步长为2,最大值为100,允许循环分配:

CREATE NEW SEQUENCE newseq2 START WITH 1 INCREMENT BY 2 MAXVALUE 100 CYCLE;

Group Sequence

语法

CREATE [GROUP] SEQUENCE <name>
[ START WITH <numeric value> ]
[ UNIT COUNT <numeric value> INDEX <numeric value> ]
说明

如果未指定类型关键字,在DRDS模式数据库中默认创建Group Sequence。在AUTO模式数据库中创建时需要显式指定GROUP类型。

参数说明

参数

说明

START WITH

Group Sequence的起始值,默认起始值依赖于单元数量和单元索引,如果没有指定单元数量和单元索引,则默认起始值为100001。

UNIT COUNT

Group Sequence的单元数量,默认值为1。

INDEX

Group Sequence的单元索引,取值范围为[0, 单元数量-1],默认值为0。

说明
  • Group Sequence是非连续的。START WITH参数仅具有指导意义, Group Sequence不会严格将该参数作为起始值,但是保证起始值比该参数值更大。

  • 大于一个单元的Group Sequence,不支持转换到其它类型的Sequence。

  • 创建Group Sequence后,不支持修改单元数量和索引。

示例

创建一个普通的Group Sequence,默认一个单元:

CREATE GROUP SEQUENCE groupseq;

创建包含三个单元的跨实例或库的全局Group Sequence(将三个指定了相同单元数量和不同单元索引的同名Group Sequence,分别用于三个不同的实例或库,组成一个全局Group Sequence)。

  • 实例1或库1:

    CREATE GROUP SEQUENCE ugroupseq UNIT COUNT 3 INDEX 0;
  • 实例2或库2:

    CREATE GROUP SEQUENCE ugroupseq UNIT COUNT 3 INDEX 1;
  • 实例3或库3:

    CREATE GROUP SEQUENCE ugroupseq UNIT COUNT 3 INDEX 2;

Time-based Sequence

语法

CREATE TIME SEQUENCE <name>
重要

存储Time-based Sequence值的列必须为BIGINT类型。

示例

创建一个Time-based Sequence:

CREATE TIME SEQUENCE seq3;