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 ];

入力

CREATE SEQUENCE コマンドの入力は以下のとおりです。
表 1. CREATE SEQUENCE の入力
入力 説明
<seq_name> シーケンスの名前。
<datatype> データ型。 任意の exact integer 型 (byteint、smallint、integer、bigint など) を指定することが可能です。 このオプションを指定しない場合、デフォルトのデータ型は bigint となります。 データタイプとその範囲については、表1を参照のこと。
START WITH 開始値。 この節は、シーケンスの最小値より大きな値から昇順シーケンスを開始する場合や、シーケンスの最大値より小さな値から降順シーケンスを開始する場合に指定します。

昇順シーケンスのデフォルト値は、シーケンスの最小値です。 降順シーケンスのデフォルト値は、シーケンスの最大値です。 この整数値は、シーケンス・データ型の minvaluemaxvalue の範囲内である必要があります。

INCREMENT BY 増分値。 この整数値には任意の正の整数や負の整数を指定できますが、ゼロは指定できません。 この値の大きさは、minvaluemaxvalue の差より小さくなければなりません。

正の値を指定する場合は昇順シーケンスを、 負の値を指定する場合は降順シーケンスを、それぞれ作成します。 このオプションを指定しない場合、デフォルトは 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 コマンドは以下の出力を生成します。
表 2. CREATE SEQUENCE の出力
出力 説明
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;