電子書籍の厳選無料作品が豊富!

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

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

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

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

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

A 回答 (2件)

    • good
    • 0

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



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

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

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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!