mysql设置级联删除和更新
SQL级联删除和级联更新的概念(1)为什么要用级联?当没有对目标键设置级联删除和更新,删除或更新主键表中的数据(外键表中有该目标键的数据)时,会报错,不允许删除或更新,必须先把外键表中关联的数据删除之后才能删除主键表中的数据。(2)简单思路多设置几条sql语句,在删除主键表中的数据时,先把外键表中与之关联的数据删除。(3)级联概念其实在sql中就有这个功能,只需要把命令写好就可以了。概念:当对主键
SQL级联删除和级联更新的概念
(1)为什么要用级联?
当没有对目标键设置级联删除和更新,删除或更新主键表中的数据(外键表中有该目标键的数据)时,会报错,不允许删除或更新,必须先把外键表中关联的数据删除之后才能删除主键表中的数据。
(2)简单思路
多设置几条sql语句,在删除主键表中的数据时,先把外键表中与之关联的数据删除。
(3)级联概念
其实在sql中就有这个功能,只需要把命令写好就可以了。
概念:当对主键表中的数据进行删除和更新时,数据库会对关联的数据会自动删除和更新。
结合例子的具体使用方法
就初学的学生选课这一关系的案例来进行简要说明。配合例子食用,更为有效!
这里要注意:创建时,不加外键
(1)创建三个表,分别为t_student、t_course、t_choose
sql语句为:
create table t_student
(
student_id integer not null comment '学生学号',
student_name varchar(20) not null comment '学生姓名',
primary key (student_id)
);
create table t_course
(
course_id integer not null comment '课程编号',
course_name varchar(20) not null comment '课程名称',
primary key (course_id)
);
create table t_choose
(
id integer not null comment '选课编号' auto_increment,
student_id integer not null comment '学生学号',
course_id integer not null comment '课程编号',
primary key (id)
);
(2)添加级联
1–>查询方式添加
on delete cascade on update cascade是关键语句
alter table t_choose add constraint fk_t_student1 foreign key (student_id) references t_student (student_id) on delete cascade on update cascade;
alter table t_choose add constraint fk_t_course1 foreign key (course_id) references t_course (course_id) on delete cascade on update cascade;
2–>在可视化环境,Navicat for MySQL中添加
实际效果
(1)表中数据
student表
course表
choose表
(2)删除和更新实验
—>更新
course表中的course_id为2的改为1002
保存后的choose表数据
—>删除
删除掉student表中student_id为2的学生
保存后choose表数据
发现student_id为2的数据全都被删除了
本次笔记就到这啦!希望能有所收获!

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)