外键是指表中某一字段的值依赖于另一表中某字段的值,被依赖的字段必须具有主键约束或唯一约束。
被依赖的表称为主表或父表,设置外键的表称为从表或子表。
外键只有表级约束,没有列级约束。
主表中字段值不存在,从表依赖的外键字段值不能添加。
从表中依赖的外键值存在,主表中不能删除被依赖的外键值。
外键策略
删表:先删主表,再删从表
删数据:先删从表数据,再删主表数据
cascade:级联操作,操作主表的时候会影响从表的外键信息(可能对生产库数据造成很大影响)
alter table t student add constraint fk_ stu classno foreign key (classno)references t_class (cno) on update cascade on delete cascade;
级联置空操作 set null
alter table t student add constraint fk_ stu classno foreign key (classno)references t_class (cno) on update set null on delete set null;
两种级联策略可以混用结合不同场景
比如:朋友圈删除 随之点赞评论一起删除 可以级联
