MySQL外鍵與主表關係設置說明

目錄

 

1、使用場景

2、代碼實現        

3、總結

4、參考文章


1、使用場景

        目前大型互聯網企業一般都禁止使用外鍵;主要是通過程序控制關聯表之中外鍵約束關係;但是一些中小企業之中開發之中還是有不少人使用外鍵約束。下面根據實際情況說明一下設置外鍵關係。

2、代碼實現        

    在設置外鍵的時候,刪除時和更新時兩列有四個值可以選擇:CASCADE、NO ACTION、RESTRICT、SET NULL,自己全親自試了一遍,它們的區別如下:

  • CASCADE:父表delete、update的時候,子表會delete、update掉關聯記錄;
  • SET NULL:父表delete、update的時候,子表會將關聯記錄的外鍵字段所在列設爲null,所以注意在設計子表時外鍵不能設爲not null;
  • RESTRICT:如果想要刪除父表的記錄時,而在子表中有關聯該父表的記錄,則不允許刪除父表中的記錄;
  • NO ACTION:同 RESTRICT,也是首先先檢查外鍵;
外鍵約束設置
空、RESTRICT、NO ACTION 刪除:從表記錄不存在時,主表纔可以刪除,刪除從表,主表不變。
更新:從表記錄不存在時,主表菜可以更新,更新從表,主表不變。
CASCADE 刪除:刪除主表時自動刪除從表。刪除從表,主表不變。
更新:更新主表時自動更新從表。更新從表,主表不變。
SET NULL 刪除:刪除主表時自動更新從表爲NULL,刪除從表,主表不變。
更新:更新主表時自動更新從表值爲NULL。更新從表,主表不變。

 

 

 

 

3、總結

        個人認爲建議不要使用外鍵約束,在程序之中控制外鍵關係;外鍵約束後建議在表的說明備註裏面寫明操作規則。我看我們以前的人涉及的都是 RESTRICT 意思必須刪除子表記錄後才能刪除主表記錄。

         個人建議如果要設置,外鍵的主表可以選擇 CASCADE 相對可以及時更新。根據實際情況自己選定適合場景

4、參考文章

       Mysql外鍵設置中的CASCADE、NO ACTION、RESTRICT、SET NULL

       MySQL外鍵設置之Cascade、NO ACTION、Restrict、SET NULL

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章