本文介紹建立不同類型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;