MySQL—表的完整性约束(外键约束)(二)

在人生的道路上,不管是潇洒走一回,或者是千山独行,皆须是自己想走的路,虽然,有的人并不是很快就能找到自己的方向和道路,不过,只要坚持到底,我相信,就一定可以找到自己的路,只要找到路,就不必怕路途遥远了。

导读:本篇文章讲解 MySQL—表的完整性约束(外键约束)(二),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

1、班级表
在这里插入图片描述

2、学生表
在这里插入图片描述
例1:删除班级5:如果直接删除的话肯定不行,因为有外键约束

delete from t_class where cno=5;

1451 – Cannot delete or update a parent row: a foreign key constraint fails (mytestdb.t_student, CONSTRAINT fk_stu_classno FOREIGN KEY (classno) REFERENCES t_class (cno))

– 加入外键策略:
– 策略1:no action 不允许操作
– 先把班级2对应的学生表中的班级改为null

update t_student set classno=null where classno=5;

delete from t_class where cno=5;

在这里插入图片描述
在这里插入图片描述

– 策略2:cascade 级联操作:操作主表的时候影响从表的外键信息:
– 先删除之前的外键约束:
– 重新添加外键约束

-- 先删除之前的外键约束:
alter table t_student drop foreign key fk_stu_classno;
-- 重新添加外键约束:
alter table t_student add constraint fk_stu_classno foreign key (classno) references t_class (cno) on update cascade on delete cascade;

删除外键之后

-- 试试更新:
update t_class set cno = 5 where cno = 3;
-- 试试删除:
delete from t_class where cno = 5;

– 策略3:set null 置空操作:
– 先删除之前的外键约束:
– 重新添加外键约束:

alter table t_student drop foreign key fk_stu_classno;
-- 重新添加外键约束:
alter table t_student add constraint fk_stu_classno foreign key (classno) references t_class (cno) on update set null on delete set null;
-- 试试更新:
update t_class set cno = 8 where cno = 1;

更新成功

– 2.应用场合:
– (1)朋友圈删除,点赞。留言都删除 – 级联操作
– (2)解散班级,对应的学生 置为班级为null就可以了,– set null

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/123587.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!