MySQL 数据库添加数据时为什么会产生外码(外键)约束?原理就是什么?如何解决?
生活随笔
收集整理的這篇文章主要介紹了
MySQL 数据库添加数据时为什么会产生外码(外键)约束?原理就是什么?如何解决?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 前言
- 一、插入新數據時報錯外鍵約束?
- 二、對于出錯 SQL 語句的分析
- 三、對于外碼約束的分析
- 四、如何處理外鍵約束?
- 總結
前言
我們在使用 MySQL 數據庫時,添加數據如果設計不合理很容易出現外碼約束的情況,為什么會產生這樣的問題?那我們該如何處理這一問題呢?依據又是什么?本篇文章帶你進一步來深度剖析,并帶著你的思路來設計解決方案。本次案例的案例情景是傳統的數據庫表:學生-課程數據庫。
一、插入新數據時報錯外鍵約束?
我們在 Course 表中插入課程號為 1 的數據時提示違反了外鍵約束。插入語句如下:
insert into course(cno,cname,cpno,ccredit) values('1','數據庫','5',4);二、對于出錯 SQL 語句的分析
我們先根據 Course 表的定義,看哪一個是外鍵。查看 Course 表定義的 SQL 語句如下:
create table course ( cno char(4) primary key, cname char(40), cpno char(4), ccredit smallint, foreign key cpno references course(cno));從上面的 SQL 語句可以看出,cpno 是外鍵,而且引用的是本表的主鍵 cno。
三、對于外碼約束的分析
我們根據數據庫定義的參照完整性規則得知:外鍵 cpno 的取值不為空的情況下(如上 cpno=‘5’),與其對應的主鍵 cno 在參照表中必須存在。
但是我們反觀上面操作,第一個插入的就是 cno=‘1’ 的數據,cno=‘5’ 的還沒有插入,很顯然不滿足參照完整性規則。
四、如何處理外鍵約束?
解決方法:
總結
本文我們掌握了 MySQL 數據庫如何在設計不合理時遇到的外碼約束的問題,并通過經典案例為大家分析了為何會出現這樣的問題,同時順著思路來設計業務的解決方案。本文提到的數據庫參照完整性規則是數據庫設計的基礎知識,大家切記要重視基礎,活學活用,方能在開發中百戰不殆!感謝大家的支持,我是白鹿,一個不懈奮斗的程序猿。希望本貼能幫助到大家,歡迎大家的一鍵三連!如果還有什么問題、建議或者補充可以留言在帖子下方,給予更多人幫助!
更多資訊微信搜索公眾號【WDeerCode代碼圈】
總結
以上是生活随笔為你收集整理的MySQL 数据库添加数据时为什么会产生外码(外键)约束?原理就是什么?如何解决?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2013逍客原厂机油型号是多少?
- 下一篇: c mysql数据库_C实现MySQ