Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 外部キー制約:ON DELETE オプション | リレーショナルデータベース
リレーショナルデータベースと正規化

book外部キー制約: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オプションがその夢を叶えるでしょうか?

question mark

カップを落としたとき、世界が崩れ落ちるように感じる場合、どの ON DELETE オプションがその感覚を反映していますか?

正しい答えを選んでください

question mark

親は常に子どもを守りますが、もし立場が逆になった場合、どの ON DELETE オプションが子どもが親を守ることを表していますか?

正しい答えを選んでください

question mark

もし何かが壊れるたびに、それが魔法のように金に変わってほしいと思うなら、どのON DELETEオプションがその夢を叶えるでしょうか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 2.  2

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 2.  2
some-alt