MySQL通过外键约束实现数据库的参照完整性,外键约束条件可在创建外键时指定,table的存储引擎只能是InnoDB,因为只有这种存储模式才支持外键。
外键约束条件有以下4种:
(1)restrict方式:同no action,都是立即检查外键约束;
- - 限制,指的是如果子表引用父表的某个字段的值,那么不允许直接删除父表的该值。
(2)cascade方式:在父表上update/delete记录时,同步update/delete子表的匹配记录 ;
On delete cascade从mysql3.23.50开始可用,on update cascade从mysql4.0.8开始可用 ;
-- 级联,删除/更新父表的某条记录,子表中引用该值的记录会自动被删除/更新。
(3)No action方式:如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作 这个是ANSI SQL-92标准,从mysql4.0.8开始支持;
--无参照完整性关系,有了也不生效。
(4)set null方式:在父表上update/delete记录时,将子表上匹配记录的列设为null 要注意子表的外键列不能为not null
On delete set null从mysql3.23.50开始可用;,on update set null从mysql4.0.8开始可用 。