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