シーケンス

シーケンス とは、小切手番号など値の自動生成を可能にするデータベース・オブジェクトです。 シーケンスは、ユニーク・キー値を生成するタスクに最も適しています。 アプリケーションはシーケンスを使用して、番号の追跡に使用される列値から発生し得る並行性とパフォーマンス上の問題を回避することができます。 データベース外で作成された数値と比べて、シーケンスの利点は、データベース・サーバーが生成された数値を追跡できることにあります。 異常終了して再始動しても、重複した番号が生成されることはありません。

生成されるシーケンス番号のプロパティー

  • 値は位取りがゼロの数値データ・タイプになります。 このようなデータ・タイプは SMALLINT、BIGINT、INTEGER、および DECIMAL です。
  • 連続値は、指定した整数増分値によって異なる場合があります。 デフォルト増分値は 1 です。
  • カウンター値はリカバリー可能です。 カウンター値は、リカバリーが要求されたときにログから再構成されます。
  • パフォーマンスを上げるため、値をキャッシュに入れることができます。 値を事前割り振りしてキャッシュに保管しておくと、シーケンスのために値を生成するとき、ログへの非同期入出力が少なくなります。 システム障害が発生した場合、使用されていないキャッシュ値はすべて失われたものとみなされます。 失われる可能性のあるシーケンス値の最大数は、次のとおり計算されます。
    • ORDER を指定すると、最大数は CACHE オプションに指定された値になります。
    • 複数パーティションまたは Db2® pureScale® 環境では、CACHE オプションに指定された値に新しい ID 値を生成するメンバーの数を掛けた値が最大値になります。
シーケンスで使用できる式には、以下の 2 つがあります。
  • NEXT VALUE 式: 指定されたシーケンスの次の値を返します。 NEXT VALUE 式がシーケンスの名前を指定していれば、新しいシーケンス番号が生成されます。 ただし、1 つの照会の中で同じシーケンス名を指定している NEXT VALUE 式のインスタンスが複数ある場合、シーケンスのカウンターは結果の行ごとに 1 つだけ増加し、NEXT VALUE のすべてのインスタンスが結果の各行に同じ値を戻します。
  • PREVIOUS VALUE 式: 現行アプリケーション・プロセス内の直前のステートメントに指定されたシーケンスに対して最後に生成された値を返します。 つまり、ある特定の接続では別の接続が NEXT VALUE を呼び出しても、PREVIOUS VALUE は定数のままです。

これらの式の完全な詳細と例については、 シーケンス参照を参照してください。