質問 |
||
| 質問者: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 |
|
| この回答へのお礼 | ご回答ありがとうございました。 ご指摘の通り、私の勘違いのようです、すみません。 連動して動いてくれる便利なものだと勘違いしておりました。 どうもありがとうございました! |