首页 > 代码库 > 实体外键约束、级联操作

实体外键约束、级联操作

【实体关系】
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;

 

实体外键约束、级联操作