首页 > 代码库 > 实体外键约束、级联操作
实体外键约束、级联操作
【实体关系】
1.一对多:在多的表,增加一个字段,用于只想该实体所悟的另外的实体的标识。
2.多对多:利用一个中间表,表示实体之间的对应关系。(中间表和实体表是一对多关系)
【外键约束】foreign key (class_id) references tb_class (class_id);
drop table if exists tb_class;create table tb_class( class_id int primary key auto_increment, class_name varchar(10) not null default ‘mysql‘ comment ‘班级姓名‘) character set utf8;drop table if exists tb_student;create table tb_student( stu_id int primary key auto_increment, stu_name varchar(10) not null default ‘‘, class_id int, foreign key (class_id) references tb_class (class_id) on delete set null) character set utf8;insert into tb_class values (null,‘MySQL001‘);insert into tb_student values (null,‘张‘,1);
【修改外键】先删除,在新建。通过修改表完成
alter table tb_name drop foreign key 外键名称;
alter table tb_student drop foreign key tb_student_ibfk_1;
alter table tb_name add foreign key 外键定义;
alter table tb_student add foreign key (class_id) references tb_class (class_id) on delete set null;
【级联操作】
当主表数据发生改变时,与之关联的从表数据应该如何处理:
主表更新:on update
主表删除:on delete
【允许的级联动作】on delete set null on update cascade
cascade关联操作,如果主表被更新或删除,那么从表也会执行相应的操作。
set null设置为null,表示从表不指向任何主表记录。
restrict:拒绝主表的相关操作。
alter table tb_student add foreign key (class_id) references tb_class (class_id) on delete set null on update cascade;
实体外键约束、级联操作
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。