こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

親子関係のテーブルについて

現在SQLServerを使用した、Webアプリケーションの製作を行なっています。

そのデータベース内で、親子関係があるテーブルを使用しており、親テーブルの主キーIDを、子テーブルの外部キーに設定しています。
親テーブルの主キーIDはidentityを使用して連番にしています。

親子関係があるテーブルは、親が登録されると、すぐに子のテーブルにもデータを追加するという形で、親テーブルが追加された直後に親テーブルの主キーIDをMAX関数を使用して取得し、子テーブルに登録しております。

このやり方ですと、通常は問題は無いのですが、同時に連続してアクセスがある時に、親テーブルの主キーIDを取得する際に、ずれが生じたりして正確な親子関係にならない場合があります。

この手法は一般的な手法ではないのでしょうか?また、何かいい対処法はございませんでしょうか?
お力をお貸しください。よろしくお願いします。

投稿日時 - 2007-01-10 11:50:44

QNo.2656022

すぐに回答ほしいです

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

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

あまりたいしたコメントは出来ませんが参考程度に。

理解済とは思いますが、ms-06fsさんの手法ですとデータの整合性が保証できません。
親テーブルに登録したときのID=子テーブルに登録したときのIDが100%保証できないからです。

同時アクセスの可能性があるアプリケーションでは親テーブルに登録する際の主キーIDをアプリ側でコントロールしたほうがいいかと思います。
(1)親テーブルに登録する前にMAX関数にて親テーブルの最後のIDを取得。
(2)それをアプリ内でコントロールし、親テーブルに登録&子テーブルに登録。

こんな感じでいかがでしょうか?

投稿日時 - 2007-01-11 11:48:38

あなたにオススメの質問