助け合いフォーラム
この問題はプレミアムコンテンツです。
外部キー制約で参照されているカラムをUPDATEできるのは、なぜ?
【わからないこと】
回答の内、「UPDATE group_info SET group_id = 4 WHERE group_id = 2;」がなぜ正解になるのかわかりません。
【わからない理由】
「group_infoのカラムの値(group_id = 2)」を変更してしまったら、
「その値を外部キー制約で参照しているmember_infoテーブルのカラム(group_id = 2)」が成り立たなくなると思うからです。
【詳細】
group_infoテーブルのgroup_idカラムは
member_infoテーブルのgroup_idカラムから外部キーとして参照されています。
member_infoテーブルのgroup_idカラムに値(2)が存在しています。
上記のUPDATE文を実行すると、
group_infoテーブルのgroup_idカラムの値(2)が(4)へと変更されます。
すると、member_infoテーブルの(group_id = 2)の参照元が無くなり
外部キー制約が成り立たなくなると思うのですが、
回答の「UPDATE group_info SET group_id = 4 WHERE group_id = 2;」を実行しても
エラーにならないのは、なぜなのでしょうか。
member_infoテーブルのgroup_idカラムに値(2)が存在しています。
member_infoテーブルのgroup_idカラムに2を挿入するINSERT文は実行されてないようですけど、ひょっとしてidカラムの2と間違えてないですか?
INSERT INTO member_info VALUES (
2
, '島田', 3);
参照元に存在しない値であれば、外部キーの参照先はUPDATEできるはずです。
コメント
この投稿に対して返信しませんか?
m miho33
2022/04/22 12:45
回答ありがとうございます。 まさに、ご指摘のとおりidカラムと間違えておりました。 member_infoテーブルのカラムの位置と、カラム名にidが含まれることに意識を引っ張られていました。 スッキリです。ありがとうございました。