説明
このステートメントは、シーケンスを作成するために使用されます。シーケンスはデータベースオブジェクトの一種であり、ユーザーはシーケンスから一意の整数を生成できます。
2人のユーザーが同時に同一のシーケンスをインクリメントする場合、各ユーザーが取得するシーケンス番号には間隔が生じる可能性があり、一方のユーザーは他方のユーザーが生成したシーケンス番号を決して取得できないことがあります。シーケンス番号はテーブルとは独立して生成されるため、1つまたは複数のテーブルで同じシーケンスを使用できます。
シーケンスを作成後、SQLステートメント内で CURRVAL プセウドカラムを使用してシーケンスの現在値を返すか、NEXTVAL プセウドカラムを使用して次に増分される新しい値を返すことができます。詳細については、シーケンスのプセウドカラムを参照してください。
構文
CREATE [WITH HINT] SEQUENCE [ schema. ] sequence_name
[ INCREMENT BY simple_num ]
[ START WITH simple_num ]
[ MAXVALUE simple_num | NOMAXVALUE ]
[ MINVALUE simple_num | NOMINVALUE ]
[ CYCLE | NOCYCLE ]
[ CACHE simple_num | NOCACHE ]
[ ORDER | NOORDER ]
[ RESTART ]
パラメータ説明
フィールド |
説明 |
|---|---|
| WITH HINT | オプションです。クエリオプティマイザーが使用するヒント情報を指定します。 |
| schema. | シーケンスを含むスキーマを指定します。Schemaを省略した場合、データベースはユーザーの現在のスキーマ内にシーケンスを作成します。 |
| sequence_name | 作成するシーケンス名。 |
| INCREMENT BY simple_num | シーケンスの自動インクリメント幅を指定します。simple_num は正の数または負の数にできますが、0は指定できません。正の数を指定した場合、シーケンスは昇順になります。負の数を指定した場合、シーケンスは降順になります。指定しない場合、デフォルト値は1です。 |
| START WITH simple_num | シーケンスの開始値を指定します。simple_num は MAXVALUE 以下、MINVALUE 以上である必要があります。指定しない場合、昇順の場合は最小値、降順の場合は最大値がデフォルトで設定されます。 |
| MAXVALUE simple_num | シーケンスの最大値を指定します。simple_num の取り得る範囲は [-9223372036854775808,9223372036854775807] です。注意
|
| NOMAXVALUE | NOMAXVALUE がデフォルト値です。NOMAXVALUE を指定した場合、昇順の最大値は9223372036854775807、降順の最大値は -1 になります。 |
| MINVALUE simple_num | シーケンスの最小値を指定します。simple_num の取り得る範囲は [-9223372036854775808,9223372036854775807] です。 |
| NOMINVALUE | NOMINVALUE がデフォルト値です。NOMINVALUE を指定した場合、昇順の最小値は1、降順の最小値は -9223372036854775808 になります。 |
| CYCLE | シーケンスの値が循環して生成されるように指定します。つまり、シーケンスが最大値または最小値に達した後も値の生成を続けます。昇順で最大値に達すると、最小値を生成します。降順のシーケンスが最小値に達すると、最大値を生成します。 注意
|
| NOCYCLE | NOCYCLE がデフォルト値です。シーケンスが最大値または最小値に達した後、新たな値を生成できなくなるように指定します。 |
| CACHE simple_num | メモリ内に事前に割り当てる自動増分値の個数を指定します。simple_num のデフォルト値は20です。CACHE simple_num の値は1より大きい必要があります。CACHE simple_num の値が1の場合、NOCACHE と同等です。 |
| NOCACHE | シーケンスの値が事前に割り当てられないように指定します。CACHE と NOCACHE を両方とも省略した場合、データベースはデフォルトで20個のシーケンス番号をキャッシュします。 |
| ORDER | シーケンスの値が順序良く生成されるように指定します。 |
| NOORDER | NOORDER がデフォルト値です。つまり、シーケンスの値が順序良く生成される保証はありません。 |
| RESTART | シーケンスを最小値から再開始するように指定します。CYCLE を指定した場合、最大値に達すると自動的に再開始されます。 |
例
Schema test 内にシーケンス seq1 を作成し、自動インクリメントのステップサイズを2に指定します。以下の例では、seq1.nextval の最初の参照は1を返し、2番目の参照は3を返します。その後の各参照の戻り値は、前の値よりも2大きくなります。
obclient> CREATE SEQUENCE test.seq1 START WITH 1 MINVALUE 1 MAXVALUE 10 INCREMENT BY 2 NOCYCLE NOORDER CACHE 30;
obclient> SELECT seq1.nextval FROM DUAL;
期待される実行結果:
+--------+
| nextval|
+--------+
| 1 |
+--------+
1 row in set
obclient> SELECT seq1.nextval FROM DUAL;
期待される実行結果:
+--------+
| nextval|
+--------+
| 3 |
+--------+
1 row in set