首页 > 数据库 > SQL > 正文

mysql有哪些外键约束等级

冷炫風刃
发布: 2025-10-30 20:51:33
原创
239人浏览过
外键约束通过ON DELETE和ON UPDATE定义父表变更时子表的响应行为。1. CASCADE:父表删除或更新时,子表对应记录级联操作,适用于订单与订单项等生命周期一致的场景。2. SET NULL:父表变更后子表外键设为NULL,要求字段允许为空,适用于员工与部门等可暂时解绑的关联。3. RESTRICT:子表存在引用时禁止父表操作,防止数据破坏,是默认行为之一。4. NO ACTION:在InnoDB中与RESTRICT相同,立即拒绝操作。5. SET DEFAULT:MySQL的InnoDB不支持,使用会报错。实际常用CASCADE、SET NULL和RESTRICT,根据业务选择可有效保障数据一致性与系统稳定。

mysql有哪些外键约束等级

在 MySQL 中,外键约束(FOREIGN KEY)用于维护表之间的引用完整性。当定义外键时,可以通过 ON DELETEON UPDATE 子句指定当父表中的记录被删除或更新时,子表应如何响应。这些行为称为“外键约束等级”或“参照动作”。

1. CASCADE(级联)

当父表中的记录被删除或更新时,子表中对应的记录也会自动被删除或更新。

适用场景:
  • 需要保持数据完全同步,比如订单项随订单一起删除。
  • 主表和从表关系紧密,生命周期一致。

2. SET NULL

当父表记录被删除或更新时,子表中外键字段被设置为 NULL。注意:该字段必须允许为 NULL。

适用场景:
  • 子记录可以独立存在,但暂时失去关联,比如员工的部门被删除,但员工保留,部门字段置空。

3. RESTRICT(限制)

如果子表中存在关联记录,则禁止删除或更新父表中的对应记录。这是默认的约束行为之一。

一键抠图
一键抠图

在线一键抠图换背景

一键抠图30
查看详情 一键抠图
说明:
  • 试图删除或修改父表数据时,若子表有引用,操作将被拒绝。
  • 防止意外破坏数据完整性。

4. NO ACTION

与 RESTRICT 类似,在 MySQL 的 InnoDB 引擎中,NO ACTION 和 RESTRICT 实际上表现相同,都会拒绝操作。

注意:
  • 标准 SQL 中 NO ACTION 可能延迟检查,但在 MySQL 中立即生效,等同于 RESTRICT。

5. SET DEFAULT(不支持)

某些数据库支持此选项,即外键设为默认值,但 MySQL 的 InnoDB 存储引擎不支持 SET DEFAULT

提醒:
  • 即使语法写入,MySQL 会报错或忽略。
  • 设计时避免使用该选项。

基本上就这些。实际使用中,CASCADE、SET NULL 和 RESTRICT 是最常见且有效的方式。根据业务逻辑选择合适的约束等级,能有效保证数据一致性和系统稳定性。

以上就是mysql有哪些外键约束等级的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号