微信编辑器做网站,阿里巴巴手工活外发加工网,简网app工厂,外贸推广有哪些好的方式文章目录前言一、插入新数据时报错外键约束#xff1f;二、对于出错 SQL 语句的分析三、对于外码约束的分析四、如何处理外键约束#xff1f;总结前言 我们在使用 MySQL 数据库时#xff0c;添加数据如果设计不合理很容易出现外码约束的情况#xff0c;为什么会产生这样的问…
文章目录前言一、插入新数据时报错外键约束二、对于出错 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’ 的还没有插入很显然不满足参照完整性规则。
四、如何处理外键约束
插入数据的时候所有的 cpno 字段暂时都置为 null所有数据插入以后再依次更新这些数据的 cpno 的值。该方法的优点是复杂性低容易实现。插入数据的时候不是按表中 cno 的顺序插入而是根据数据依赖的关系插入数据。比如根据表里的数据分析得出可以按 cno2、6、4、7、5、1、3 的顺序插入数据。 总结 本文我们掌握了 MySQL 数据库如何在设计不合理时遇到的外码约束的问题并通过经典案例为大家分析了为何会出现这样的问题同时顺着思路来设计业务的解决方案。本文提到的数据库参照完整性规则是数据库设计的基础知识大家切记要重视基础活学活用方能在开发中百战不殆 我是白鹿一个不懈奋斗的程序猿。望本文能对你有所裨益欢迎大家的一键三连若有其他问题、建议或者补充可以留言在文章下方感谢大家的支持