实体外键约束、级联操作

【实体关系】
1.一对多:在多的表,增加一个字段,用于只想该实体所悟的另外的实体的标识。
2.多对多:利用一个中间表,表示实体之间的对应关系。(中间表和实体表是一对多关系)

【外键约束】foreign key (class_id) references tb_class (class_id); 【auto_increment 1:最低只能从1开始自动增长,而不是从0开始增长

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 update cascade on delete restrict;

 

posted @ 2014-11-22 01:27  ayee  阅读(221)  评论(0编辑  收藏  举报