質問: データ変更に伴うレコードの扱い方をどのようにしたらいいか判断がつかないので質問させていただきます。 テーブルがuser(以下U),schedule(以下S),user_scuedule(以下US)と3つあり、USは中間テーブルので、持っているのはUS_id(主キー),U_id,S_idの3つです。UとSはそれぞれお互いのデータは持っていません。USテーブルの1つのレコードにはUS_id,U_id,S_idがそれぞれ1つあり、1対1対1になります。 1つのSに複数のUが参加する場合USテーブルのレコードは US_1,U_1,S_1 US_2,U_2,S_1 US_3,U_3,S_1 ... という感じなっています。 登録の際はフォームのPOSTにSとU_idのデータがあり、SのデータをSにINSERTして、発行されたS_idとPOSTのU_idをUSにINSERTしています。 このような場合、データ変更、削除の場合、USテーブルのデータはどのようにしたらいいでしょうか? 削除の場合 Sが削除された場合はUSの中から削除されたSのS_idと一致するUS_idを削除。 Uが削除された場合はUSの中から削除されたUのU_idと一致するUS_idを削除。 変更の場合 SやU自体が変更された場合はそのまま何もしない。 Sに参加するUに変更ある場合は、そのS_idを持つUS_idを削除して、変更後のデータをUSにINSERT(新たに別のUS_idが発行される)。 と今思いつく限り書きましたが、このような感じになりますでしょうか?アドバイスなどよろしくお願いいたしますm(_ _)m
回答: 中間テーブルへのデータ登録 にかなりの回答が載っています。それを放置して新しく質問するのは止めましょう。 > > 削除の場合 > > Sが削除された場合はUSの中から削除されたSのS_idと一致するUS_idを削除。 > > Uが削除された場合はUSの中から削除されたUのU_idと一致するUS_idを削除。 > > > yambejpさんの回答の「まとめ」のCREATE TABLEに親テーブルをDELETEしたら子テーブルも自動的にDELETEしてくる記述が載っています。CREATE TABLE, INSERT を実行してデータを用意し、親テーブルを1行DELETEして動作確認しましたか? > > foreign key(sid) references schedule(sid) on delete cascade, > > foreign key(uid) references user(uid) on delete cascade, > > >