ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.2829622 シーケンスを使わずに主キーを発行したい
質問者:motacilla  お世話になります。

 今まで主キーの発行はシーケンスを使っていましたが、
シーケンスだと飛び番が発生するので、それ以外の方法を探しています。

 データ追加時に(select max(主キー) + 1)で発行した所、複数人数で使用するDBの為
稀にタイミングによっては同じ番号を拾ってきてしまい、「主キーが重複しています」のエラーが出てしまいます。
 

 主キーを安全に発行するのに、みなさん、どのような方法でされているのでしょうか?
 googleで検索をしてみましたが、意外と見つからないです。
 どなたかご教示いただけると助かります。
困り度:
  • 困っています
質問投稿日時:
07/03/13 16:57
この質問に対する回答は締め切られました。

回答良回答20pt

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

などは、必須になります。
回答者:chukenkenkou
種類:アドバイス
どんな人:専門家
自信:参考意見
回答日時:
07/03/15 20:21
この回答へのお礼有り難うございました。
 発番テーブル という言葉をよく聞きましたので、ものすごく簡単にシリアル管理が出来るものかと思っておりましたが、どうもそうではないようですね・・・
 やはりシーケンスを使った方が間違いないのでしょうか