新しいシーケンスジェネレーターを定義します。

構文

CREATE SEQUENCE name [ INCREMENT BY increment ]
  [ { NOMINVALUE | MINVALUE minvalue } ]
  [ { NOMAXVALUE | MAXVALUE maxvalue } ]
  [ START WITH start ] [ CACHE cache | NOCACHE ] [ CYCLE ]

説明

CREATE SEQUENCE コマンドを使用して、シーケンスジェネレーターを作成します。 name という名前の単一行のテーブルが生成され、初期化されます。 ジェネレーターは、コマンドを実行するユーザーが所有します。

スキーマを指定すると、指定したスキーマにシーケンスが作成されます。 それ以外の場合、現在のスキーマにシーケンスが作成されます。 シーケンス名は、同じスキーマ内の他のシーケンス、テーブル、インデックス、またはビューの名前とは異なる必要があります。

シーケンスが作成された後、NEXTVAL および CURRVAL 関数を使用してシーケンスを管理することができます。

パラメーター

パラメーター 説明
name 作成するシーケンスの名前。 名前はスキーマで修飾することができます。
increment INCREMENT BY increment 句はオプションであり、現在のシーケンス値に追加する値を指定します。 正の値は昇順を示し、負の値は降順を示します。 既定値: 1
NOMINVALUE | MINVALUE minvalue MINVALUE minvalue 句はオプションであり、シーケンスが生成できる最小値を指定します。 この句を指定しない場合、デフォルト値が使用されます。 昇順のデフォルト値:1。 降順のデフォルト値:-263-1。 NOMINVALUE キーワードを使用してデフォルト値を指定できることにご注意ください。
NOMAXVALUE | MAXVALUE maxvalue MAXVALUE maxvalue 句はオプションであり、シーケンスが生成できる最大値を指定します。 この句を指定しない場合、デフォルト値が使用されます。 昇順のデフォルト値:263-1。 降順のデフォルト値:-1。 NOMAXVALUE キーワードを使用してデフォルト値を指定できることにご注意ください。
start START WITH start 句はオプションであり、シーケンスの開始番号を指定します。 デフォルトでは、昇順のシーケンスは minvalue パラメーターに指定された値から始まり、降順のシーケンスは maxvalue パラメーターに指定された値から始まります。
cache CACHE キャッシュ句はオプションであり、高速アクセスのために割り当てられ、メモリに格納されるシーケンス番号の数を指定します。 最小値は 1 で、NOCACHE など、一度に 1 つの値しか生成できないことを示します。 既定値: 1。
CYCLE 昇順のシーケンスが最大値に達したとき、または降順のシーケンスが最小値に達したときにシーケンスを折り返すことができます。 制限に達した場合、次に生成される数値は、minvalue または maxvalue パラメーターで指定された値です。

このパラメーターはデフォルトでは指定されていません。 このパラメーターを指定しない場合、シーケンスが最大値に達した後に NEXTVAL 関数を呼び出すと、エラーが返されます。 注記: NO CYCLE キーワードを使用して、デフォルト値を指定することができます。 このキーワードは、Oracle データベースと互換性がありません。

注記

シーケンスはビッグ整数演算に基づいています。 シーケンスの範囲は、8 バイト整数の範囲を超えることはできません。 有効な値は –9223372036854775808 から 9223372036854775807 です。 初期のプラットフォームでは、コンパイラーは 8 バイト整数をサポートしていない場合があります。 この場合、シーケンスは -2147483648 から +2147483647 の範囲の通常の整数演算を使用します。

複数のセッションが同時に、キャッシュパラメーターが 1 より大きい値に設定されているシーケンスオブジェクトを使用する場合、予期しない結果が取得される可能性があります。 各セッションは、シーケンスオブジェクトへの各アクセス中に連続するシーケンス値を割り当ててキャッシュし、シーケンスオブジェクトの最終値を増やします。 セッション内で NEXTVAL 関数を次にキャッシュ 1 で使用すると、シーケンスオブジェクトに触れずに、事前に割り当てられた値が返されます。 したがって、セッションが終了すると、割り当てられているがセッション内で使用されていないすべての値が失われ、シーケンスにいくつかのギャップが生成されます。

複数のセッションに異なるシーケンス値を割り当てることができますが、これらの値は、すべてのセッションが考慮されると、順序が乱れて生成されます。 たとえば、キャッシュパラメーターが 10 に設定されている場合、セッション A は 1 から 10 の値を保持し、NEXTVAL = 1 を返す場合があります。 セッション A が NEXTVAL = 2 を生成する前に、セッション B は 11 から 20 までの値を保持し、NEXTVAL = 11を返します。 したがって、キャッシュパラメーターが 1 に設定されている場合、NEXTVAL 値は順番に生成されます。 キャッシュパラメーターが 1 より大きい値に設定されている場合、NEXTVAL 値は異なり、連続して生成されない場合があります。 最後の値は、値が NEXTVAL によって返されたかどうかに関係なく、セッションが保持する最新の値を反映します。

101 から始まる、serial という名前の昇順シーケンスを作成します。

CREATE SEQUENCE serial START WITH 101;

このシーケンスから次の番号を選択します。

SELECT serial.NEXTVAL FROM DUAL;

 nextval
---------
     101
(1 row)

supplier_seq という名前のシーケンスを作成し、NOCACHE オプションを指定します。

CREATE SEQUENCE supplier_seq
    MINVALUE 1
    START WITH 1
    INCREMENT BY 1
    NOCACHE;

このシーケンスから次の番号を選択します。

SELECT supplier_seq.NEXTVAL FROM DUAL;

 nextval
---------
       1
(1 row)