かなめのロジック

フリーSEの雑記ブログ。ORACLEやPostgreSQL、情報セキュリティ、金融について主に書いています。

シーケンス(順序)の作成方法と削除方法

time 2017/02/14

シーケンス(順序)の作成方法と削除方法

例えば、一意で通しの伝票番号を自動で採番したいなど、そういった場合に便利なのが、シーケンス(順序)です。

本記事では、ORACLEのシーケンスの作成や削除の方法について、まとめました。

ちなみに、シーケンスの使用方法については、こちらの記事を参照ください。

sponsored link

シーケンス(順序)とは

シーケンス(順序)とは、一意の整数を生成するときに使用できるオブジェクトです。

大きな利点は、同時に接続される複数のセッション間でも、一意の値を容易に生成できる点です。これは、コミットやロールバックに影響せずに、順序から整数を取得した段階で、順序がカウントアップ(またはカウントダウン)されるためです。

例えば、受注テーブルの主キーである伝票番号を一意に採番したい場合に、使用します。

文法

作成

INCREMENT BY 増分値
採番の増分間隔を指定します。0以外の正の整数、または負の整数を指定します。省略した場合は、1をなります。

START WITH 初期値
初期値(最初に採番される値)を指定します。省略した場合は、昇順の時は順序の最小値、降順の時は順序の最大値になります。

MAXVALUE 最大値 | NOMAXVALUE
採番される最大値を指定します。
NOMAXVALUE、または省略した場合は、昇順の時は10の28乗-1、降順の場合は-1になります。

MINVALUE 最小値 | NOMINVALUE
採番される最小値を指定します。
NOMINVALUE、または省略した場合は、昇順の時は1、降順の場合は-(10の27乗-1)になります。

CYCLE | NOCYCLE
CYCLEを指定すると、昇順の時は最大値に達しても、引き続き最小値から採番を続けます。
NOCYCLEを指定、または省略した場合は、エラー(ORA-08004)になります。

CACHE キャッシュ数 | NOCACHE
CACHEを指定すると、処理速度向上のために共有プール上にキャッシュ数分の値を保持しておきます。
初回の採番時や保持していた値を使い切った次の採番時にシーケンスにアクセスしてキャッシュ数分の値を保持します。
NOCACHEを指定すると、共有プール上の保持は行いません。省略した場合は、20個の値をキャッシュします。

ORDER | NOORDER
RAC環境のみに影響します。
ORDERを指定すると、必ず要求順に採番されます。
NOORDERを指定、または省略した場合、要求順での採番は保証されません。
RAC環境以外では、この設定に関わらず必ず要求順に採番されます。

使用例

以下、シーケンス作成(増分値1、最小値1、最大値999999、循環あり、キャッシュ20)の例です。

変更

各オプションは、作成時と同じですが、初期値の指定だけはできません。現在の値を変更するためには、後述の削除後に再作成を行いましょう。

削除

まとめ

一意の整数を生成するときに便利なオブジェクトであるシーケンス(順序)についてみてきました。

同時に動くセッション間で一意の値を生成するのは、非常に難しいです。そのようなケースで非常に有用ですよ。

関連


sponsored link

管理人

かなめ

フリーの業務系システムエンジニア。情報処理安全確保支援士。 ORACLEと金融と子育ての狭間で、元気に楽しくやってます。 [詳細]

管理人twitter

ブログ村



sponsored link