溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Navicat中添加外鍵

發(fā)布時間:2020-11-24 14:59:53 來源:億速云 閱讀:160 作者:Leah 欄目:開發(fā)技術

本篇文章為大家展示了怎么在Navicat中添加外鍵,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

前言

用Navicat為mysql數(shù)據(jù)庫的兩個表之間建立外鍵關系,出現(xiàn)“cannot add foreign key constraint”錯誤,操作了很久不知道怎么回事,發(fā)現(xiàn)竟然是。。。。

正文

想要建立class表與student表之間的外鍵連接,class為父表,student為子表

怎么在Navicat中添加外鍵

怎么在Navicat中添加外鍵

打開student的設計表。

怎么在Navicat中添加外鍵

怎么在Navicat中添加外鍵

如果c_id不允許為空則當,選擇刪除時-->>SET NULL就會出現(xiàn)Cannot add foreign key constraint的提示,這是因為刪除置空有條件,必須滿足字段允許為空(如果不滿足,外鍵無法創(chuàng)建)當然,如果不允許為空,可以選擇刪除時-->>CASCADE也可以建立外鍵。

怎么在Navicat中添加外鍵

當勾選允許為空之后

怎么在Navicat中添加外鍵

再去保存就可以了。

還有必須注意,Engin必須為InnoDB。

怎么在Navicat中添加外鍵

總結(jié)一下:

外鍵條件

在我們使用外鍵的時候,應該遵循如下條件:

  • 外鍵要存在,首先必須保證表的引擎是 InnoDB(默認的存儲引擎),如果不是 InnoDB 存儲引擎,那么外鍵可以創(chuàng)建成功,但沒有約束作用;
  • 外鍵字段的字段類型(列類型),必須與父表的主鍵類型完全一致;
  • 每張表中的外鍵名稱不能重復;
  • 增加外鍵的字段,如果數(shù)據(jù)已經(jīng)存在,那么要保證數(shù)據(jù)與父表中的主鍵對應。
  • 如果外鍵約束模式選擇SET NULL ,那么字段必須允許為NULL,否則出現(xiàn)Cannot add foreign key constraint。

外鍵約束

所謂外鍵約束,就是指外鍵的作用。之前所講的外鍵的作用都是默認的作用,實際上,可以通過對外鍵的需求,進行定制操作。

外鍵約束有三種模式,分別為:

  • district:嚴格模式(默認),父表不能刪除或更新一個已經(jīng)被子表數(shù)據(jù)引用的記錄;
  • cascade:級聯(lián)模式,父表的操作,對應子表關聯(lián)的數(shù)據(jù)也跟著被刪除;
  • set null:置空模式,父表的操作之后,子表對應的數(shù)據(jù)(外鍵字段)被置空。

 設計外鍵的界面,有七列:

  • 名(name):可以不填,保存時會自動生成。
  • 欄位(FieldName):要設置的外鍵,如:student 里的c_id
  • 參考數(shù)據(jù)庫(Reference DataBase):外鍵關聯(lián)的數(shù)據(jù)庫
  • 被參考表(Reference Table):關聯(lián)的表,這里是class表
  • 參考欄位(Forgin filed Names):關聯(lián)的字段,class里的id
  • 刪除時(ondelete):刪除時候的動作,當時我選擇的是SETNULL
  • 更新時(onupdate):更新時候的動作,我選擇的是CASCADE

上述內(nèi)容就是怎么在Navicat中添加外鍵,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI