mysql 几种外键约束规则
时间: 2024-08-13 17:02:53 浏览: 51
MySQL中的外键约束(Foreign Key)用于确保关联表之间的数据完整性,主要有以下几种规则:
1. **CASCADE (级联)**: 当主键被删除或更新时,对应的外键值也将按照指定的方式处理:
- **CASCADE DELETE**: 删除主表中的记录时,自动删除从表中匹配的记录。
- **CASCADE UPDATE**: 更新主表中的记录时,若存在依赖项,更新从表中的相关记录保持一致。
- **CASCADE SET NULL**: 主表删除记录时,从表对应列设为NULL。
2. **SET DEFAULT (默认)**: 主键被删除时,从表中的相应外键设置为默认值(通常是NULL)。
3. **RESTRICT (限制)**: 默认规则,不允许删除或更新导致从表有未被引用的记录。
4. **NO ACTION (无动作)**: 对于违反外键约束的操作,不做任何动作,可能导致数据库处于不一致状态。
5. **CASCADE ON DELETE RESTRICT 和 CASCADE ON UPDATE RESTRICT**: 这实际上是Cascade和Restrict的组合,分别用于删除和更新操作。
6. **ON UPDATE DEFERRED 和 ON DELETE DEFERRED**: 这些选项意味着更改将在下次提交事务时才会生效,适合对延迟操作的需求。
设置外键约束时,通常会结合业务逻辑选择最合适的规则,以维护数据的一致性和完整性。在CREATE TABLE语句中,`FOREIGN KEY`关键字通常跟随`REFERENCES`来定义约束条件。
阅读全文