欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > 数据库 >内容正文

数据库

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

发布时间:2025/3/21 数据库 48 豆豆
生活随笔 收集整理的这篇文章主要介绍了 MySQL—表的完整性约束(外键约束)(二) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

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

《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读

总结

以上是生活随笔为你收集整理的MySQL—表的完整性约束(外键约束)(二)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。