• ベストアンサー

シーケンスを使わずに主キーを発行したい

 お世話になります。  今まで主キーの発行はシーケンスを使っていましたが、 シーケンスだと飛び番が発生するので、それ以外の方法を探しています。  データ追加時に(select max(主キー) + 1)で発行した所、複数人数で使用するDBの為 稀にタイミングによっては同じ番号を拾ってきてしまい、「主キーが重複しています」のエラーが出てしまいます。    主キーを安全に発行するのに、みなさん、どのような方法でされているのでしょうか?  googleで検索をしてみましたが、意外と見つからないです。  どなたかご教示いただけると助かります。

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

  • ベストアンサー
回答No.1

(1)maxキー取得及び+1して格納を、トランザクションの一番最後で行うなど、DBの排他区間を最短になるようにする。 (2)重複エラー時のリトライ処理を作りこむ などは、必須になります。

motacilla
質問者

お礼

有り難うございました。  発番テーブル という言葉をよく聞きましたので、ものすごく簡単にシリアル管理が出来るものかと思っておりましたが、どうもそうではないようですね・・・  やはりシーケンスを使った方が間違いないのでしょうか

関連するQ&A