本文介紹創建不同類型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 | 兩個參數只能選擇其中一個,說明如下:
|
如果未指定類型關鍵字,在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;