存在 20 年的 MySQL Bug #11472(外键级联操作不触发触发器)终于在 2026 年被修复,本文回顾了其历史、社区反应与修复过程。
📝 详细摘要
本文详细回顾了 MySQL 中一个存在长达 20 年的经典 Bug #11472。该 Bug 由 Omer Barnir 于 2005 年提交,核心问题是当外键约束导致的行级联更新或删除时,目标表上的触发器不会被执行。文章梳理了从 Bug 提交、官方确认、多次承诺修复却一再跳票,到最终在 2026 年通过 WL#17024 被修复的完整历程。文中还收录了大量开发者社区对该 Bug 的调侃、吐槽与“庆祝”,生动展现了这一技术问题如何演变为程序员圈内的文化符号。文章最后也提及了修复可能带来的兼容性问题,以及部分用户对旧行为的依赖。
💡 主要观点
- MySQL Bug #11472 的核心是外键级联操作不触发目标表上的触发器。 当通过外键约束间接更新或删除表中的行时,该表上定义的触发器(如 AFTER UPDATE)不会按预期执行,这违反了 ACID 完整性原则。
💬 文章金句
- 当由于表中存在外键定义而间接更新/删除表中的行时,该表上的触发器将不会按要求执行。
- 如果这个缺陷在下一个小版本更新中就被修复,那么原本不会执行的触发器会突然生效。尽管依赖这种行为是非常糟糕的设计,但用户仍有可能在无意间陷入这种场景。
- 搞什么鬼?我一直很依赖这个功能!请改回来。
- 什么?!那我们以后每年该给谁买蛋糕呢......
📊 文章信息
AI 初评:82
来源:dbaplus社群
作者:dbaplus社群
分类:软件编程
语言:中文
阅读时间:16 分钟
字数:3871
标签: MySQL, Bug #11472, 触发器, 外键, 数据库