Mysql添加外鍵約束

來源:互聯網
上載者:User

標籤:

簡單說一下使用外鍵的好處

1、完整性條件約束

比如:
使用者表中有欄位 使用者編號(id) , 名稱(username)
裝置表中有欄位 裝置編號(id) , 裝置名稱(devicename) 裝置屬於的使用者編號(user_id)

把裝置表中的使用者編號設定成外鍵,引用使用者表的主鍵。
當向裝置表中輸入資料時,如果輸入使用者編號在使用者表中找不到對應的話,就會報錯,從而能保證這個裝置必定會屬於一個存在的使用者。

2、可以實現串聯刪除

還引用上面的例子,當一個使用者不在使用該系統時,需要將使用者和他的裝置從資料庫刪除,如果不使用外鍵,需要分別從使用者表和裝置表中刪除資料,如果使用外鍵,只需要刪除使用者,引用使用者表的主鍵做為外鍵的資料表中的相應資料也會自動刪除,只需要操作一次資料表。

還有就是在phpMyadmin中暫時還沒有直接設定外鍵的功能,可以通過命令列的方式來修改,格式如下
alter table 表名
add foreign key 欄位 references 表名(欄位)

使用Navicat 工具可以很方便的設定外鍵:
滑鼠右鍵開啟設計表的介面。

上面的選項卡選擇外鍵就能添加

不過我在添加外鍵的時候,遇到了問題

我先建立了兩個表tb_user 和 tb_device,儲存引擎都是InnoDB,且都有user_id這個屬性(類型完全一樣),添加外鍵的時候 出現了錯誤

ERROR : Cannot add or update a child row: a foreign key constraint fails

最後才發現,原來是我的tb_device表中已經存在了資料,因此如果添加外鍵,就會導致錯誤。
解決的辦法
刪除資料,再添加外鍵



來自為知筆記(Wiz)

Mysql添加外鍵約束

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.