Oracle Database
シーケンス
サーチ…
構文
- CREATE SEQUENCE SCHEMA.SEQUENCE {INCREMENT BY INTEGER | INTEGERを使用して開始| MAXVALUE INTEGER | NOMAXVALUE INTEGER | MINVALUE INTEGER | NOMINVALUE INTEGER | CYCLE INTEGER | NOCYCLE INTEGER |キャッシュ| NOCACHE |オーダー| NOODER}
パラメーター
パラメータ | 詳細 |
---|---|
スキーマ | スキーマ名 |
インクリメントする | 数字の間隔 |
皮切りに | 最初の番号が必要です |
マックスバリュー | シーケンスの最大値 |
ノーマックスバリュー | 最大値はデフォルトです |
最小値 | シーケンスの最小値 |
名目金額 | 最小値がデフォルトになります |
サイクル | この値に達した後に開始にリセットする |
ノーサイクル | デフォルト |
キャッシュ | 事前割り当て制限 |
ノーキャッシュ | デフォルト |
注文 | 数字の順序を保証する |
いいえ | デフォルト |
シーケンスの作成:例
目的
CREATE SEQUENCEステートメントを使用して、複数のユーザーが一意の整数を生成するデータベース・オブジェクトであるシーケンスを作成します。シーケンスを使用して主キー値を自動的に生成することができます。
シーケンス番号が生成されると、コミットまたはロールバックされたトランザクションとは独立して、シーケンスがインクリメントされます。 2人のユーザが同じシーケンスを同時にインクリメントすると、シーケンス番号が他のユーザによって生成されているため、各ユーザが取得するシーケンス番号にギャップが生じることがあります。 1人のユーザは、他のユーザによって生成されたシーケンス番号を決して得ることができない。あるユーザーによってシーケンス値が生成された後、そのユーザーは、シーケンスが別のユーザーによって増分されているかどうかにかかわらず、その値に引き続きアクセスできます。
シーケンス番号はテーブルとは無関係に生成されるため、1つまたは複数のテーブルに対して同じシーケンスを使用できます。個々のシーケンス番号は、最終的にロールバックされるトランザクションで生成されて使用されるため、スキップされているように見える可能性があります。さらに、単一のユーザは、他のユーザが同じシーケンスから描画していることを認識しないことがある。
シーケンスが作成された後、シーケンスの現在の値を戻すCURRVAL疑似列またはシーケンスをインクリメントして新しい値を戻すNEXTVAL疑似列を使用して、SQLステートメント内のその値にアクセスできます。
前提条件
独自のスキーマにシーケンスを作成するには、CREATE SEQUENCEシステム権限が必要です。
別のユーザーのスキーマにシーケンスを作成するには、CREATE ANY SEQUENCEシステム権限が必要です。
順序の作成:例次の文は、サンプル・スキーマoeに順序customers_seqを作成します。このシーケンスは、行がcustomers表に追加されたときに顧客ID番号を提供するために使用できます。
CREATE SEQUENCE customers_seq
START WITH 1000
INCREMENT BY 1
NOCACHE
NOCYCLE;
customers_seq.nextvalへの最初の参照は1000を返します。2番目の参照は1001を返します。その後の各参照は、前の参照よりも大きな値1を返します。