すべてのプロダクト
Search
ドキュメントセンター

PolarDB:CREATE SEQUENCE

最終更新日:Mar 29, 2026

一意の整数を自動的に生成するための新しいシーケンスジェネレーターを定義します。これは、プライマリキー値の生成に一般的に使用されます。

構文

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

説明

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

スキーマを指定した場合、シーケンスはそのスキーマ内に作成されます。指定しない場合、現在のスキーマ内に作成されます。シーケンス名は、同じスキーマ内の他のシーケンス、テーブル、インデックス、またはビューと競合してはなりません。

シーケンスを作成した後、NEXTVALCURRVAL を使用して値を生成および読み取ります。

パラメーター

パラメーター説明
nameシーケンスの名前です。スキーマ修飾できます。
INCREMENT BY incrementNEXTVAL の呼び出しごとに現在のシーケンス値に追加される値です。正の値は昇順シーケンスを作成し、負の値は降順シーケンスを作成します。デフォルト: 1
MINVALUE minvalue / NOMINVALUEシーケンスが生成できる最小値です。昇順シーケンスのデフォルト: 1。降順シーケンスのデフォルト: -2<sup>63</sup> - 1。デフォルトを復元するには、NOMINVALUE を使用します。
MAXVALUE maxvalue / NOMAXVALUEシーケンスが生成できる最大値です。昇順シーケンスのデフォルト: 2<sup>63</sup> - 1。降順シーケンスのデフォルト: -1。デフォルトを復元するには、NOMAXVALUE を使用します。
START WITH startシーケンスによって返される最初の値です。昇順シーケンスは minvalue にデフォルト設定され、降順シーケンスは maxvalue にデフォルト設定されます。
CACHE cache / NOCACHE高速アクセスを目的として、セッションごとにメモリに事前割り当てするシーケンス値の数です。最小: 1 (NOCACHE と同等)。デフォルト: 1
CYCLEシーケンスが制限に達した後、周回することを許可します。昇順シーケンスは minvalue から再開し、降順シーケンスは maxvalue から再開します。CYCLE なしの場合、制限を超えた任意の NEXTVAL 呼び出しはエラーを返します。デフォルトを復元するには、NO CYCLE を使用します。NO CYCLE は Oracle互換ではありません。

注意事項

整数範囲。シーケンスは符号付き64ビット整数演算を使用します。サポートされる範囲は -9,223,372,036,854,775,808 から +9,223,372,036,854,775,807 です。8バイト整数サポートがない古いプラットフォームでは、範囲は -2,147,483,648 から +2,147,483,647 です。

CACHE および同時セッション。 cache1 より大きい場合、各セッションは最初のアクセス時に値のブロックを事前に割り当てます。これらの値はそのセッション専用に予約され、他のセッションからは見えません。セッションが終了すると、そのブロック内の未使用の値は失われ、全体的なシーケンスにギャップが生じます。たとえば、cache = 10 の場合、セッション A は値 1~10 を保持する可能性があります(NEXTVAL = 1 を返します)が、セッション A が 2 に達する前に、セッション B が 11~20 を保持します(NEXTVAL = 11 を返します)。厳密に連続した値が必要な場合は、cache = 1(または NOCACHE)を設定します。

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

CREATE SEQUENCE serial START WITH 101;

次の値を取得します。

SELECT serial.NEXTVAL FROM DUAL;

出力:

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

supplier_seq という名前のキャッシュなしシーケンスを作成します。

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

次の値を取得します。

SELECT supplier_seq.NEXTVAL FROM DUAL;

出力:

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