ホームページ >データベース >mysql チュートリアル >Mysql 外部キー設定の CASCADE、NO ACTION、RESTRICT、SET NULL とは何ですか?

Mysql 外部キー設定の CASCADE、NO ACTION、RESTRICT、SET NULL とは何ですか?

王林
王林転載
2023-05-27 17:19:133078ブラウズ

今日、Navicat for mysql を使用してテーブルを設計すると、外部キーを設定するときに、削除および更新時に 2 つの列で 4 つの値から選択できます: CASCADE、NO ACTION、 RESTRICT、SET NULL、私はすべて自分で試しましたが、違いは次のとおりです:

  • CASCADE: 親テーブルが削除および更新すると、子テーブルは関連するレコードを削除および更新します;

  • SET NULL: 親テーブルが削除または更新すると、子テーブルは関連するレコードの外部キー フィールドの列を NULL に設定するため、外部キーは子テーブルの設計時に null 以外に設定することはできません。

  • 子テーブルに親テーブルに関連付けられたレコードがある場合、RESTRICT (制限) により親テーブルの削除が防止されます。 Record

  • NO ACTION: RESTRICT と同じで、最初に外部キーもチェックします。

Empty、RESTRICT , NO ACTION 削除: テーブルのレコードが存在しない場合、マスター テーブルを削除できます。スレーブ テーブルが削除されても、マスター テーブルは変更されません。
更新: スレーブ テーブルのレコードが存在しない場合、メイン テーブルのメニューを更新できます。スレーブ テーブルが更新されても、メイン テーブルは変更されません。
CASCADE 削除: マスター テーブルを削除するときに、スレーブ テーブルも自動的に削除します。マスター テーブルを変更せずに、スレーブ テーブルを削除します。
更新: マスター テーブルを更新するときにスレーブ テーブルを自動的に更新します。マスターテーブルを変更せずに、スレーブテーブルを更新します。
SET NULL Delete: マスター テーブルを削除すると、スレーブ テーブルは自動的に NULL に更新され、スレーブ テーブルが削除されても、マスター テーブルは変更されません。
Update: マスター テーブルを更新するときに、スレーブ テーブルの値を NULL に自動的に更新します。マスターテーブルを変更せずに、スレーブテーブルを更新します。

理解を助けるための小さな例を次に示します。

(1) データベース ブックショップで、次のように新しいテーブル a を作成しました。

Mysql 外部キー設定の CASCADE、NO ACTION、RESTRICT、SET NULL とは何ですか?

外部キーの設定:

Mysql 外部キー設定の CASCADE、NO ACTION、RESTRICT、SET NULL とは何ですか?# (2) データベース ブックショップで、次のように新しいテーブル b を作成しました。

#(3) 次のようにテーブル a とテーブル b にレコードを挿入します。 Mysql 外部キー設定の CASCADE、NO ACTION、RESTRICT、SET NULL とは何ですか?

Mysql 外部キー設定の CASCADE、NO ACTION、RESTRICT、SET NULL とは何ですか?

ここで、テーブル a の id2 フィールドは外部です。キー フィールドについては、テーブル b の主キーを参照するため、テーブル b が親テーブル、テーブル a が子テーブルとなるため、テーブル a の外部キーを設定するときに、次のように設定します。 4 つの異なる値を使用して、上で述べた結論を導き出します。 Mysql 外部キー設定の CASCADE、NO ACTION、RESTRICT、SET NULL とは何ですか?

以上がMysql 外部キー設定の CASCADE、NO ACTION、RESTRICT、SET NULL とは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。