- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:正規化したテーブルのinsertの方法)
正規化したテーブルへのデータ挿入方法と予約IDの管理について
このQ&Aのポイント
- 正規化したテーブルへのデータを追加する方法について悩んでいます。予約tableと予約詳細tableを作成し、予約IDで関係付けることを考えています。
- 予約が入った際に予約tableにデータをinsertし、その後予約詳細tableにデータをinsertする流れについても疑問があります。
- 予約IDの重複を避けるために、予約IDテーブルを作成して払い出す方法などを検討しています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
パフォーマンス重視、予約IDに空き番が出ててもいいならシーケンスが一番いいと私も思います。 予約IDに空き番が出ると困るなら、仕方がないので予約IDテーブル(1レコード)を作成し トランザクション開始 UPDATE RETURNNING か UPDATE して SELECT で予約IDを取得 予約テーブルと予約明細テーブルにINSERT COMMIT or ROLLBACK なら後続トランザクションは予約IDテーブルのUPDATEでWAITになるから重複は発生しない。 (その代わりにここがボトルネックになる危険がある)
その他の回答 (1)
- root139
- ベストアンサー率60% (488/809)
回答No.1
PostgreSQL や Oracle であればシーケンスを使ってIDを生成するのが一番簡単な方法でしょう。 シーケンスは並行して複数のトランザクションから取得しても必ず一意になります。 http://www.postgresql.jp/document/9.1/html/functions-sequence.html