ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者:ataru2 外部キーについて、親に挿入した値が子に反映されません
困り度:
  • 困っています
はじめまして、mysqlとphpを勉強しているものです。
MySQL クライアントのバージョン: 4.0.25、phpは5を利用しています。
外部キーの設定はできたのですが、親に挿入した値が子に反映されません。

DBには会員情報テーブルとプロフィールテーブルがあります。
更新削除ともにカスケードを設定し、ストレージエンジンはinnodbです。

会員情報テーブル
ID(オートインクリメント)|ニックネーム

プロフィールテーブル
ID(外部キーとして会員情報テーブルのIDを参照/オートインクリメント)|地域|コメント

上記のようなテーブルで、まず親テーブルに会員登録情報を送信します。その後、whereで同じIDを持つ行にプロフィールを登録させたいと考えています。
親テーブルには会員情報がきちんと登録されるのですが、子テーブルには何も反映されていません。

データの挿入はphpからクエリを送信して行っています。

書籍やwebで色々と調べたのですが、原因がわかりませんでした。
どなたかアドバイスいただけないでしょうか?よろしくお願いいたします。
質問投稿日時:08/04/19 19:40
質問番号:3960382
この質問に対する回答は締め切られました。
最新から表示回答順に表示良回答のみ表示

回答

 

回答者:auty ・ chukenkenkou様の言われるように、子テーブルにレコードを追加する必要がありそうです。

・ 会員情報テーブルとプロフィールテーブルは別のテーブルです。

  両者のレコードには、1対1の関係がありそうですが、たとえ外部キーの設定をしても異なるテーブルですから、別々にレコードを追加することが必要です。

>>> その後、whereで同じIDを持つ行

このとき、where句はfalseを返しているはずです。つまり何も実行されません。
種類:アドバイス
どんな人:経験者
自信:参考意見
回答日時:08/04/20 04:15
回答番号:No.2
この回答へのお礼ご回答ありがとうございました。

偏った独学のため基礎的な部分から勘違いしていたようです。

どうもありがとうございました。
子にレコードを挿入してから動作させてみます。

回答

良回答20pt

回答者:chukenkenkou 質問内容が分かりにくいのですが。。。

>外部キーの設定はできたのですが、親に挿入した値が子に反映されません

子の格納は行っているのですよね?

外部キー制約で、親の主キー更新時や親の削除時に、RDBMS側で子の更新や削除は行ってくれますが、子の追加はユーザ側で行う必要がありますけど、勘違いはないでしょうか?
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:08/04/19 23:53
回答番号:No.1
この回答へのお礼ご回答ありがとうございました。

ご指摘の通り、私の勘違いのようです、すみません。

連動して動いてくれる便利なものだと勘違いしておりました。

どうもありがとうございました!
 
最新から表示回答順に表示良回答のみ表示