PolarDB-X为指定了自增列的表自动关联一个Sequence,如果不指定Sequence类型,在AUTO模式数据库中,默认是New Sequence,在DRDS模式数据库中,默认是Group Sequence。
与表关联的Sequence的命名是以AUTO_SEQ_
为前缀,后面加上表名。
除了默认的Sequence类型, PolarDB-X也支持创建表时通过扩展语法关联其它类型的Sequence。
关联New Sequence或Time-based Sequence
自增列与New Sequence或Time-based Sequence关联,语法如下:
CREATE TABLE <name> (
<column> ... AUTO_INCREMENT [ BY NEW | TIME ],
<column definition>,
...
) ... AUTO_INCREMENT=<start value>
说明 如果指定了BY TIME,即Time-based Sequence,则该列类型必须为BIGINT。
关联Group Sequence
自增列与Group Sequence关联,语法如下:
CREATE TABLE <name> (
<column> ... AUTO_INCREMENT [ BY GROUP ] [ UNIT COUNT <numeric value> INDEX <numeric value> ],
<column definition>,
...
) ... AUTO_INCREMENT=<start value>
示例
- 示例一
DRDS模式数据库中,创建一张默认使用Group Sequence作为自增列的表:
CREATE TABLE tab1 ( col1 BIGINT NOT NULL AUTO_INCREMENT, col2 VARCHAR(16), PRIMARY KEY(col1) ) DBPARTITION BY HASH(col1);
- 示例二
DRDS模式数据库中,创建三张同名的、使用相同单元数量和不同单元索引的单元化Group Sequence作为自增列的表,分别用于三个不同的实例或库:
- 实例1或库1:
CREATE TABLE tab2 ( col1 BIGINT NOT NULL AUTO_INCREMENT UNIT COUNT 3 INDEX 0, col2 VARCHAR(16), PRIMARY KEY(col1) ) DBPARTITION BY HASH(col1);
- 实例2或库2:
CREATE TABLE tab2 ( col1 BIGINT NOT NULL AUTO_INCREMENT UNIT COUNT 3 INDEX 1, col2 VARCHAR(16), PRIMARY KEY(col1) ) DBPARTITION BY HASH(col1);
- 实例3或库3:
CREATE TABLE tab2 ( col1 BIGINT NOT NULL AUTO_INCREMENT UNIT COUNT 3 INDEX 2, col2 VARCHAR(16), PRIMARY KEY(col1) ) DBPARTITION BY HASH(col1);
- 实例1或库1:
- 示例三
DRDS模式数据库中,创建一张使用TIme-based Sequence作为自增列的表:
CREATE TABLE tab3 ( col1 BIGINT NOT NULL AUTO_INCREMENT BY TIME, col2 VARCHAR(16), PRIMARY KEY(col1) ) DBPARTITION BY HASH(col1);
- 示例四
AUTO模式数据库中,创建一张默认使用New Sequence作为自增列的表:
CREATE TABLE tab4 ( col1 BIGINT NOT NULL AUTO_INCREMENT, col2 VARCHAR(16), PRIMARY KEY(col1) ) PARTITION BY KEY(col1);
- 示例五
AUTO模式数据库中,创建一张使用Group Sequence作为自增列的表:
CREATE TABLE tab5 ( col1 BIGINT NOT NULL AUTO_INCREMENT BY GROUP, col2 VARCHAR(16), PRIMARY KEY(col1) ) PARTITION BY HASH(col1);