外部キー制約。ON DELETE オプション
メニューを表示するにはスワイプしてください
ON DELETE
リレーショナルデータベースにおいて、外部キーは2つのテーブル間のリレーションシップを確立します。このリレーションシップは厳格であり、ON DELETE オプションと呼ばれる特定のルールや制約が伴います。
ON DELETE オプションは、外部キーによってリンクされたレコードが他のテーブルから削除されたときに実行されるアクションを指定します。
例として、主キーとそれに関連する外部キーのシナリオを考えます。主キーを持つレコードを削除すると、対応する外部キーに対して指定されたON DELETEアクションが実行されます。
外部キーを**データベース管理システム(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 アクションを利用するには、外部キー列が NULL 値を許容する必要があります。
SET DEFAULT
SET DEFAULT アクションは SET NULL と似ています。主レコードを削除すると、関連するレコードの外部キーが NULL ではなく、指定したデフォルト値に変更されます。
1. カップを落としたとき、世界が崩れ落ちるように感じる場合、それに最も近い ON DELETE オプションはどれですか?
2. 親は常に子どもを守りますが、もし立場が逆になった場合、子どもが親を守ることを表す ON DELETE オプションはどれですか?
3. 何かが壊れるたびに、それが魔法のように金に変わってほしいと思う場合、どのON DELETEオプションがその夢を実現できるでしょうか?
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください