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