Mysql 外鍵級聯約束(Default、Restrict、NO ACTION、 Cascade、SET NULL)


Mysql的外鍵引擎是InnoDB,接下來介紹一下mysql的外鍵約束配置。

一、外鍵約束關系

級聯是用來設計一對多關系的。關系為:子表—>父表,箭頭方向表示子表的外鍵關聯了父表的主鍵。

外鍵約束對子表的含義: 
  如果在父表中找不到候選鍵,則不允許在子表上進行insert/update 

外鍵約束對父表的含義: 
  在父表上進行update/delete以更新或刪除在子表中有一條或多條對應匹配行的候選鍵時,父表的行為取決於:在定義子表的外鍵時指定的on update/on delete子句,InnoDB支持5種方式——Default、Restrict、NO ACTION、 Cascade、SET NULL

 

二、五種級聯級別

設置mysql外鍵的時候會發現有兩欄:刪除時、更新時。這兩欄是設置這個外鍵的級聯級別。

如圖共有五種,第一行空白是Default,默認級別。接下來介紹一下這五種級別的差異。

   . cascade方式
在父表上update/delete記錄時,同步update/delete掉子表的匹配記錄 

   . set null方式
在父表上update/delete記錄時,將子表上匹配記錄的列設為null
要注意子表的外鍵列不能為not null  

   . No action方式
如果子表中有匹配的記錄,則不允許對父表對應候選鍵進行update/delete操作  

   . Restrict方式
同no action, 都是立即檢查外鍵約束


   . Set default方式

父表有變更時,子表將外鍵列設置成一個默認的值 但Innodb不能識別

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM