CREATE SEQUENCE
CREATE SEQUENCE 文は、シーケンスの作成に使用します。 シーケンスはデータベース・オブジェクトであり、シーケンスを使用することにより、複数のユーザーが固有の整数を生成できます。
- データ型の最大値に向けて増加していく昇順シーケンスを作成するには、MAXVALUE を省略するか、もしくは NO MAXVALUE を指定します。 最小値 1 に向けて減少していく降順シーケンスを作成するには、MINVALUE を省略するか、または NO MINVALUE を指定します。
- 予め定義した昇順シーケンスの制限で停止するシーケンスを作成するには、MAXVALUE パラメーターの値を指定します。 降順シーケンスの場合には、MINVALUE の値を指定します。 また、NO CYCLE を指定することもできます。 シーケンスが制限に達した後にシーケンス番号を生成しようとすると、エラーが発生します。
- 制限に達した後に再開するシーケンスを作成するには、CYCLE を指定します。
シーケンスの作成後、NEXT VALUE FOR 文という SQL 文で値を取得できます (この文は、シーケンスを増分し、新しい値を返します)。
システムは、トランザクションがコミットするかロールバックするかには無関係に、シーケンス番号を生成します。 2 人のユーザーが同じシーケンスを同時に増分した場合、各ユーザーが取得するシーケンス番号は、もう一方のユーザーがシーケンス番号を生成しているために、ギャップが生じる可能性があります。 ただし、別のユーザーが生成したシーケンス番号を取得することはありません。
構文
CREATE SEQUENCE <seq_name>
[ AS <datatype> ]
[ START WITH <start_value> ]
[ INCREMENT BY <increment> ]
[ NO MINVALUE | MINVALUE <minimum_value> ]
[ NO MAXVALUE | MAXVALUE <maximum_value> ]
[ NO CYCLE | CYCLE ];
入力
入力 | 説明 |
---|---|
<seq_name> | シーケンスの名前。 |
<datatype> | データ型。 任意の exact integer 型 (byteint、smallint、integer、bigint など) を指定することが可能です。 このオプションを指定しない場合、デフォルトのデータ型は bigint となります。 データタイプとその範囲については、表1を参照のこと。 |
START WITH | 開始値。 この節は、シーケンスの最小値より大きな値から昇順シーケンスを開始する場合や、シーケンスの最大値より小さな値から降順シーケンスを開始する場合に指定します。 昇順シーケンスのデフォルト値は、シーケンスの最小値です。 降順シーケンスのデフォルト値は、シーケンスの最大値です。 この整数値は、シーケンス・データ型の |
INCREMENT BY | 増分値。 この整数値には任意の正の整数や負の整数を指定できますが、ゼロは指定できません。 この値の大きさは、minvalue と maxvalue の差より小さくなければなりません。正の値を指定する場合は昇順シーケンスを、 負の値を指定する場合は降順シーケンスを、それぞれ作成します。 このオプションを指定しない場合、デフォルトは 1 となります。 |
NO MINVALUE | MINVALUE | シーケンスの最小値。 デフォルトは NO MINVALUE です。これは、最小値 1 を指定するのと同等です。 MINVALUE は、START WITH 以下で、MAXVALUE より小さくなければなりません。 |
NO MAXVALUE | MAXVALUE | シーケンスが持つことができる最大値。 デフォルトは NO MAXVALUE、すなわち指定されたデータ型の最大値となります。 MAXVALUE は、START WITH 以上で、MINVALUE より大きくなければなりません。 データ型の範囲の説明については、表1を参照のこと。 |
NO CYCLE | CYCLE | シーケンスが最大値 (昇順シーケンスの場合) または最小値 (降順シーケンスの場合) に到達した後に、値の生成を継続するかどうか。 デフォルトは NO CYCLE、すなわちシーケンスは最終値に到達した時点で停止するようになっています。 CYCLE を指定した場合、昇順シーケンスが最大値に達すると次は最小値が使用され、 降順シーケンスが最小値に達すると、次は最大値が使用されます。 |
出力
出力 | 説明 |
---|---|
CREATE SEQUENCE | コマンドは成功します。 |
特権
admin ユーザーまたはデータベースかスキーマの所有者であるか、あるいはアカウントが Create Sequence 管理者権限を持っている必要があります。
使用法
- 開始値が 11、増分が 2、最小値が 1、最大値が 100 のシーケンスを整数として作成します。
CREATE SEQUENCE sequence1 As integer START WITH 11 INCREMENT BY 2 MINVALUE 1 MAXVALUE 100 NO CYCLE;