數據庫中表設置外鍵(Navicat)

  1. 其中一個或者兩個表是MyISAM引擎的表,若想要使用外鍵約束,
    必須是InnoDB引擎,(實際上,如果兩個表都是MyISAM 引擎的,
    這個錯誤根本不會發生,但也不會產生外鍵),你可以通過查詢瀏
    覽器來設置表的引擎類型.
    這裏寫圖片描述
    2.若出現[MySQL] - errno:150,可能:
    這裏寫圖片描述
    可能設置了ON DELETE(刪除時) SET NULL, 但是相關的鍵的字段又設置成了NOTS NULL 值。
    你可能通過修改cascade 的屬性值或者把字段屬性設置成 allow null 來搞定這個bug.

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

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

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

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

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

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