MySQL外键约束
外键约束是指一个表中的字段(或字段集合)引用另一个表的主键或唯一键,用于建立和强制两个表数据之间的关联关系。
主要作用:
保证数据的一致性和完整性
防止非法数据插入外键列
实现表与表之间的关联
父表:被拿主键作为外键的表
子表:拿别的表的主键作为外键的表
当父表发生删除或更新操作时,可以指定子表的处理方式:
动作说明
RESTRICT(默认):拒绝父表的删除或更新操作
CASCADE:级联操作,父表删除/更新记录时,自动删除/更新子表中匹配的记录
SET NULL:父表删除/更新记录时,将子表中匹配记录的外键列设为NULL(列需允许NULL)
NO ACTION:与RESTRICT相同
SET DEFAULT:设为默认值(InnoDB不支持)
外键约束的注意事项
存储引擎要求:只有InnoDB引擎支持外键约束,MyISAM不支持
数据类型匹配:外键列和参照列的数据类型必须相同或兼容
索引要求:
父表的参照列必须有主键或唯一约束
子表的外键列会自动创建索引(如果不存在)
性能影响:外键约束会增加数据库的开销,可能影响写入性能
循环引用:避免两个表相互引用形成循环依赖
NULL值处理:外键列允许NULL值时,可以插入NULL而不违反约束
评论已关闭