順序が連番にならない原因について

順序を使うとき、番号が連番にならず欠番が発生します。なぜですか?
SQLの仕様として、順序が連番になるとは限りません。
順序は、値を取り出すたびに値が、指定した増分値(デフォルトでは1)ずつ加算されます。順序の値はRDBシステム内で一意であることが保証されているので、プライマリキーの値などとして使用することができます。しかし、取り出した値が使用されずに捨てられることもあるため、必ず連番になるわけではありません。

順序の値に欠番が発生する原因には、次のケースが考えられます。

  • 順序を使用しているトランザクションをロールバックした場合
    トランザクションをロールバックすると、そのトランザクションが使用していた順序の値は捨てられます。その後で別のトランザクションが順序の値を取り出しても、捨てられた値が再度生成されることはありません。


  • キャッシュした順序の値が、RDBの停止によって失われた場合
    順序の値の取得を高速化するために、あらかじめ順序の値を取得しておき、メモリ上に保持しておくことができます。メモリ上に保持されている値は、RDBの停止やシステムダウンによって消失します。再起動後に別のトランザクションが順序の値を取り出しても、消失した値が再度生成されることはありません。

製品・サービス区分 Symfoware
製品・サービス情報
対象製品 Symfoware Server (Native Interface)
プラットフォーム Windows, Solaris, Linux
アンサー種別 技術サポート
このページの先頭へ