外部キー制約:ON DELETE オプション
メニューを表示するにはスワイプしてください
ON DELETE
リレーショナルデータベースにおいて、外部キーは2つのテーブル間のリレーションシップを確立します。このリレーションシップは厳格であり、ON DELETEオプションと呼ばれる特定のルールや制約が伴います。
ON DELETEオプションは、外部キーによってリンクされたレコードが他のテーブルから削除されたときに実行されるアクションを指定します。
例として、主キーとそれに関連する外部キーのシナリオを考えます。主キーを持つレコードを削除すると、対応する外部キーに対して指定されたON DELETEアクションが実行されます。
注意
Database Management System (DBMS)のインターフェースを使用して外部キーを作成する場合、多くの場合、ON DELETEオプションの選択を求められます。しかし、SQLでリレーションシップを直接定義する場合は、このオプションを手動で指定する必要があります。
外部キーにはON DELETEアクションの定義が必要です。
主なON DELETEアクション
- CASCADE;
- RESTRICT(またはNO ACTION);
- SET NULL;
- SET DEFAULT.
CASCADE
主レコードが削除されると、それを外部キーで参照しているすべての関連レコードも同時に削除される。
例えば、Group テーブルと Student テーブルがあり(student テーブルが group テーブルを外部キーで参照している場合):
student.group_id から group.id への外部キー制約に ON DELETE CASCADE オプションが設定されている場合、グループを削除すると、そのグループに関連付けられているすべての学生も削除される。
RESTRICT または NO ACTION
他のテーブルに関連するレコードが存在する場合、主レコードを削除することはできません。削除を試みると、その操作はブロックされ、データベースの整合性が保たれます。
SET NULL
主レコードを削除すると、従属レコードの外部キーが NULL に変更されますが、従属レコード自体は削除されません。
注意
ON DELETE SET NULL アクションを利用するには、foreign key カラムが null 値 を許可している必要があります。
SET DEFAULT
SET DEFAULT アクションは SET NULL と似ています。主レコードを削除すると、関連レコードの外部キーが NULL ではなく、指定したデフォルト値に変更されます。
1. カップを落としたとき、世界が崩れ落ちるように感じる場合、どの ON DELETE オプションがその感覚を反映していますか?
2. 親は常に子どもを守りますが、もし立場が逆になった場合、どの ON DELETE オプションが子どもが親を守ることを表していますか?
3. もし何かが壊れるたびに、それが魔法のように金に変わってほしいと思うなら、どのON DELETEオプションがその夢を叶えるでしょうか?
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください