1月15日(木)3コマ目
今日、やったこと
- [確認テスト]確認テスト2
- シーケンス
今日のホワイトボード
シーケンス
シーケンスは、主キーの値のような、オンリーワンになる値を生成したいときに使う。
もし、下図のようなテーブルを作って、新たに主キーの値が必要なときに
- テーブルロック
- テーブル検索
- 検索値+1で更新
- テーブルロック解除
を行って値を取得すると、アクセスが集中した場合、ロック解除待ちのユーザーが発生し、アクセス速度が遅くなる。
![]() |
| 図 アクセスが集中すると |
シーケンスはこのようなケースに対応するために用意されたモノ。
シーケンス作成
まず、商品マスタテーブル作成。
![]() |
| 図 商品マスタテーブル作成 |
この商品マスタにデータを登録する際、ID列(=主キー列)の値をシーケンスから採番する。
商品マスタテーブルのID列に新しい値を採番するためのseq_商品IDシーケンスを作成。
![]() |
| 図 シーケンス作成 |
シーケンスから採番する①
商品マスタテーブルに新たに商品を登録する際、ID列の値は作成したseq_商品IDシーケンスから採番する。
![]() |
| 図 商品マスタ登録 1件目(ID列はseq_商品IDから採番) |
シーケンスから採番するには、
シーケンス名.nextval
で取得できる。
商品マスタテーブルを検索して、採番された値を確認。
![]() |
| 図 商品マスタテーブルを確認 |
はじめてseq_商品IDから採番したため、初期値の1が採番されている。
シーケンスから採番する②
商品マスタテーブルに2件目のデータを登録する。
このとき、seq_商品IDシーケンスから採番される値は
初期値(=1) + 増分(=1)×1 = 2
となる。
![]() |
| 図 商品マスタ登録 2件目(ID列はseq_商品IDから採番) |
商品マスタテーブルを検索して、採番された値を確認。
![]() |
| 図 商品マスタテーブルを確認 |
直近に採番した値を取得したい
直近に採番した値は
シーケンス名.currval
で取得できる。
![]() |
| 図 シーケンス名.currvalで直近採番値を取得 |
[まとめ]シーケンスを使う
シーケンスから新たに値を採番するには シーケンス名.nextval で取得できる。
シーケンスから直近に採番した値を取得するには シーケンス名.currval で取得できる。
![]() |
| 図 シーケンスを使う |
cycleとnocycle
シーケンス作成時に指定できるcycleとnocycleは採番する値を循環OKにするか否か。
![]() |
| 図 cycleとnocycle |










