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

王林
リリース: 2023-05-27 17:19:13
転載
3021 人が閲覧しました

今日、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 までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート