アプリ版:「スタンプのみでお礼する」機能のリリースについて

2つのテーブルがあります。
A:生徒のデータ
B:先生のデータ

AにはBのデータと紐付けしています。AとBそれぞれにユニークなキーが自動採番で振られます。

行いたい事は新しい生徒のデータが加わった際に、先生のデータが無ければ先生のデータも加え、生徒のデータも加えるということを行いたいと思います。

そこで、AとBを組み合わせたビューを作り、そのビューにINSERTをするとエラーが発生します。

そこで、考えた方法は
1. BのデータをSELECTで先生のデータを探す。(あればキーを取得後、3へ)
2. 無ければデータ追加し、自動採番で振られるキーを再度SELECTで取得。
3. 2で得られたキーを使って生徒のデータと共にAにINSERT文を行う。

です。なんとかできますが、すっきりしません。もっと効率的でスマートな方法がないのでしょうか?

ご教授お願いします。

A 回答 (1件)

二つのテーブルを同時にインサートする事は


不可能な為、やはり2回のインサート文が必要ですね

(1)Bのテーブルへのインサートを行いその時にLEFT JOINで
 Bのテーブルを紐付け、IDがNULL の場合をインサートの
 条件とすれば、1と2の作業が行えます。

(2)(1)同様にBのテーブルをJOINしインサートを行えば(1)の処理で
データが存在する為、データは反映されると思います。
    • good
    • 1
この回答へのお礼

やはり2回インサートを行うという結果は残念ですが、大変参考になりました。ありがとうございます。

お礼日時:2006/08/23 00:25

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

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A