• ベストアンサー

年度毎にシーケンスの初期化?

こんにちは あるプロジェクトでIDの連番を生成していますが、 年度毎に1から振り直します。 例:2009_001,2009_002... 2010_001... Oracleの順序(シーケンス)を使うとしたら、年度毎にどうやって順序を初期化するのでしょうか? そもそもこの場合、開発では順序を利用するべきではないでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • 3rd_001
  • ベストアンサー率66% (115/174)
回答No.1

年度毎のシーケンスを持てばいいのではないでしょうか。 要件次第ですが、年度が変わっても過去のデータを作成する必要はないのですか。1つのシーケンスを使い回すと、前の年度で作成された番号がまた採番されてしまいます。そこで過去年度のデータを作ろうとすると、番号が重複してしまいます。 年度末に休んでいて、年度が変わってから出社して入力したら、番号が重複して入力できないのは変ですよね。 プログラムで年度を判定しシーケンスを使い分けてあげるのはどうでしょうか。翌年度用のシーケンスは年次処理で作成するジョブを用意しておけばOKでしょう。 絶対に過去年度のデータは作成されないのなら、年次処理(4月01日00時00分に起動する)でシーケンスを初期化するジョブを組めばよいと思います。 シーケンスを使わないなら、採番テーブルを作ってロジックで管理するしかないと思います。その場合でも、年度毎に持っておいた方が無難だと思います。

関連するQ&A