07-MySQL外键约束

200 阅读1分钟

外键是用于建立和加强两个表数据之间链接的一列或多列, 通过将保存表中主键值的一列或多列添加到另一个表中, 可创建两个表之间的链接, 这个列就成为第二个表的外键。 外键维系两个表的关系, 保持两个表数据的完整性, 一致性。如:

员工表

姓名部门
张三1
李四2

部门表

部门号部门名称
1销售部
2IT部

员工表中部门字段就是外键, 对应部门表中的部门号主键

-- 员工表
create table staff (
    sname varchar ( 10 ) not null,
    deptid int(2)
);

-- 部门表
create table dept (
    did int(2) primary key,
    dname varchar(10) not null
)

-- 添加外键约束
alter table staff add constraint fk_did foreign key (deptid) references dept (did)

alter table staff add constraint fk_did foreign key (deptid) references dept (did) on update cascade on delete no action
策略策略说明
CASCADE父表delete、update的时候,子表会delete、update掉关联记录
SET NULL父表delete、update的时候,子表会将关联记录的外键字段所在列设为null,所以注意在设计子表时外键不能设为not null
RESTRICT如果想要删除父表的记录时,而在子表中有关联该父表的记录,则不允许删除父表中的记录
NO ACTION同 RESTRICT,也是首先先检查外键