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);
  • 示例三

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