OceanBaseデータベースにおいて、シーケンス(Sequence)とは、一定のルールに基づいてデータベースが生成する自動インクリメントの数字シーケンス番号であり、通常は間隔を置いた一連の値(数値型)です。シーケンスは自動インクリメントの特性を持つため、通常は主キーや一意キーとして使用されます。
CREATE SEQUENCE ステートメントを使用してシーケンスを作成できます。シーケンスには、現在のシーケンス値と次のシーケンス値を返すための2つの擬似列 CURRVAL と NEXTVAL が提供されます。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を参照してください。
関連ドキュメント
シーケンスに関するその他の操作については、以下のドキュメントを参照してください: