- ベストアンサー
年度毎にシーケンスの初期化?
こんにちは あるプロジェクトでIDの連番を生成していますが、 年度毎に1から振り直します。 例:2009_001,2009_002... 2010_001... Oracleの順序(シーケンス)を使うとしたら、年度毎にどうやって順序を初期化するのでしょうか? そもそもこの場合、開発では順序を利用するべきではないでしょうか? よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
年度毎のシーケンスを持てばいいのではないでしょうか。 要件次第ですが、年度が変わっても過去のデータを作成する必要はないのですか。1つのシーケンスを使い回すと、前の年度で作成された番号がまた採番されてしまいます。そこで過去年度のデータを作ろうとすると、番号が重複してしまいます。 年度末に休んでいて、年度が変わってから出社して入力したら、番号が重複して入力できないのは変ですよね。 プログラムで年度を判定しシーケンスを使い分けてあげるのはどうでしょうか。翌年度用のシーケンスは年次処理で作成するジョブを用意しておけばOKでしょう。 絶対に過去年度のデータは作成されないのなら、年次処理(4月01日00時00分に起動する)でシーケンスを初期化するジョブを組めばよいと思います。 シーケンスを使わないなら、採番テーブルを作ってロジックで管理するしかないと思います。その場合でも、年度毎に持っておいた方が無難だと思います。