- - PR -
枝番採番時の排他制御
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-02-24 17:30
伝票データ登録時に伝票番号単位に枝番を採番する必要がある為、
採番テーブルを作成しようとしたところ、 「枝番の採番は独自の採番体系があるわけでもなく単純にインクリメント しているだけなので採番テーブルなど用いずにうまく排他制御をかけて採番して下さい。」 との指摘を受けてしまいました。 枝番のような単純な連番の場合には採番テーブルは必要ないのでしょうか。 枝番の採番時の排他制御のかけ方についてご教授いただければと思います。 ■ 登録処理 ・一回の呼び出しで1伝票分のデータを受取り、DBに登録処理する。 ・伝票番号は呼び出し元より渡され、登録時には枝番のみ採番する。 ■ 開発環境 ・言語→java ・DB→Oracle | ||||||||
|
投稿日時: 2008-02-24 17:55
最初にテーブルに対してUロックを取得するのが確実な手法です。
| ||||||||
|
投稿日時: 2008-02-24 18:42
オラクルならSEQUENCEオブジェクトを使えば番号の取得はできます
ただし連番は保障されない。 | ||||||||
|
投稿日時: 2008-02-24 20:41
枝番の採番には個々の伝票レコード単位でロックすれば十分なので、
テーブル単位より粒度の小さいロックを使え、という意味でしょう。
というような構造のテーブルだとすると、
として、枝番の採番前にSELECT 〜 FOR UPDATEすればよいです。 |
1