Mysql外部キー設定でRESTRICT、NO ACTION、CASCADE、SET NULL

Mysql外部キー設定でRESTRICT、NO ACTION、CASCADE、SET NULL


今日、会社のパーミッションテーブルの構造を調べたところ、テーブル間に関連付けはなく、すべての関連付けがバックエンドに実装されていることがわかりました。これは常に少し間違っていると感じるので、Navicat formysqlを使用してテーブル構造を設計します。

その前に、まず親テーブルと子テーブルの概念を理解する必要があります。簡単に言うと、2つのテーブルが外部キーで接続されている場合、そのテーブルでは外部キーが主キーであり、そのテーブルが親テーブルであり、もう一方のテーブルが子テーブルです。

外部キーを設定する場合、2つの列を削除および更新するときに選択できる4つの値があります:RESTRICT、NO ACTION、CASCADE、SET NULL、それらの機能は次のとおりです:

  • CASCADE:親テーブルが削除および更新されると、子テーブルは関連するレコードを削除および更新します。
  • SET NULL:親テーブルが削除および更新されると、子テーブルは関連レコードの外部キーフィールドの列をnullに設定するため、子テーブルを設計するときに外部キーをnull以外に設定できないことに注意してください。
  • 制限:親テーブルのレコードを削除する必要があり、親テーブルに関連付けられている子テーブルのレコードがある場合、親テーブルのレコードを削除することはできません。
  • アクションなし:RESTRICTと同じですが、最初に外部キーを確認します。

おすすめ

転載: blog.csdn.net/weixin_42201180/article/details/107400226