OceanBaseデータベースでは、シーケンス(Sequence)とは、データベースが一定のルールに従って生成する自動インクリメントの数字シーケンス番号であり、通常は間隔をあけた一連の数値(数値型)です。シーケンスは自動インクリメント機能を備えているため、主キーや一意キーとしてよく使用されます。
CREATE SEQUENCE ステートメントを使用してシーケンスを作成できます。シーケンスには CURRVAL と NEXTVAL という2つの疑似列が提供されており、現在のシーケンス値と次のシーケンス値を返します。NEXTVAL を照会するたびに CURRVAL の値が進みます。
SQL構文は以下のとおりです:
CREATE SEQUENCE [IF NOT EXISTS] [database_name.]sequence_name
[MINVALUE int_value | NOMINVALUE]
[MAXVALUE int_value | NOMAXVALUE]
[START WITH int_value]
[INCREMENT BY int_value]
[CACHE int_value | NOCACHE]
[ORDER | NOORDER]
[CYCLE | NOCYCLE];
ステートメントの使用方法:
このステートメントを実行するユーザーは
CREATE権限を持っている必要があります。IF NOT EXISTS:オプションです。作成対象のシーケンスが既に存在し、IF NOT EXISTSを指定しない場合、システムはエラーを返します。database_name.:オプションです。シーケンスが存在するデータベースを指定するために使用します。database_name.を指定しない場合、デフォルトで現在ログインしているデータベースのシーケンスが作成されます。MINVALUE int_value | NOMINVALUE:シーケンスの最小値を指定するために使用します。値の範囲は [-1027 ~ (1027-1)] です。NOMINVALUEを指定した場合、昇順での最小値は1、降順での最小値は -(1027-1) となります。MINVALUEを指定しない場合、デフォルトでNOMINVALUEが適用されます。MAXVALUE int_value | NOMAXVALUE:シーケンスの最大値を指定するために使用します。値の範囲は [(-1027+1) ~ (1028-1)] です。NOMAXVALUEを指定した場合、昇順での最大値は(1028-1)、降順での最大値は-1となります。MAXVALUEを指定しない場合、デフォルトでNOMAXVALUEが適用されます。START WITH:シーケンスの開始値を指定するために使用します。この値はMAXVALUE以下、MINVALUE以上である必要があります。指定しない場合、昇順でデフォルト値は最小値、降順でデフォルト値は最大値となります。INCREMENT BY:シーケンスの自動インクリメントのステップ数を指定するために使用します。この値は0にすることはできません。正の数を指定した場合、シーケンスは昇順になります。負の数を指定した場合、シーケンスは降順になります。指定しない場合、デフォルト値は1です。CACHE:メモリ内に事前割り当てる自動インクリメント値の個数を指定するために使用します。デフォルトは20です。ORDER | NOORDER:シーケンスの値が順序良く生成されるかどうかを指定するために使用します。ORDERは順序良く生成することを表し、NOORDERは順序良く生成しないことを表します。デフォルトはNOORDERです。CYCLE | NOCYCLE:シーケンスの値が繰り返し生成されるかどうかを指定するために使用します。CYCLEは繰り返し生成することを表し、NOCYCLEは繰り返し生成しないことを表します。デフォルトはNOCYCLEです。
注意
MINVALUEとMAXVALUEの両方を指定する場合、MINVALUEはMAXVALUEより小さくする必要があります。MAXVALUEとMINVALUEの差は、INCREMENT BY int_value以上でなければなりません。CACHEの値は1より大きくする必要があります。CACHE INT_VALUEの値が1の場合、NOCACHEと同じになります。CYCLEを指定し、かつINCREMENT BYの値が0より小さい場合は、MINVALUEを指定する必要があります。CYCLEを指定する場合、CACHEの数はCYCLEを超えてはなりません。
シーケンス seq1 を作成し、自動インクリメントのステップサイズを 2 に指定する例:
obclient> CREATE SEQUENCE seq1 START WITH 1 MINVALUE 1 MAXVALUE 10 INCREMENT BY 2 NOCYCLE NOORDER CACHE 30;
CREATE SEQUENCE ステートメントの詳細については、CREATE SEQUENCEを参照してください。
関連ドキュメント
シーケンスに関するその他の操作については、以下のドキュメントを参照してください: