Mysql外鍵設置的詳細教程(整理中)


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

  • CASCADE:父表delete、update的時候,子表會delete、update掉關聯記錄;
  • SET NULL:父表delete、update的時候,子表會將關聯記錄的外鍵字段所在列設為null,所以注意在設計子表時外鍵不能設為not null;
  • RESTRICT:如果想要刪除父表的記錄時,而在子表中有關聯該父表的記錄,則不允許刪除父表中的記錄;
  • NO ACTION:同 RESTRICT,也是首先先檢查外鍵;

設置容易出現的問題如下

duplicate key in table

- 這個問題的原因是你的外鍵名稱 和 當前表中的字段的名字沖突產生的沖突

cannot add foreign key constraint

- 產生這個問題的原因有很多,常見原因如下:
  -- 子表和父表的引擎不是InnoDB
  -- 子表中的字段類型、長度、非空、無符號等屬性不一致
  -- 子表中的字段設置為非null 但是 父表刪除時產生的操作是 set null 則會出現這種問題

check that column/key exists

- 可以嘗試刷新navicat表頁面或者關閉頁面重新進入

暫時先這樣


免責聲明!

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



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