MySQL 一张表只能有六个触发器吗?
查看完整题解
参考回答
直接回答
现代 MySQL 允许同一表、同一事件和同一时机有多个触发器。旧的六个组合限制不适用于 8.4。可以按规则指定同类触发器的相对顺序。
讲清原理
事件包括 INSERT、UPDATE、DELETE,时机有 BEFORE 和 AFTER。同类多个触发器会增加隐藏写入和维护成本,应清楚记录依赖与执行顺序。
例子与易错点
审计与派生字段如果都在触发器处理,升级要验证两者顺序及回滚结果。不要把历史限制背成当前规则。
两个 BEFORE INSERT 触发器依次加一和乘二,输入 2 得到 6。
CREATE TABLE trigger_demo (v INT);
CREATE TRIGGER increment_value BEFORE INSERT ON trigger_demo
FOR EACH ROW SET NEW.v = NEW.v + 1;
CREATE TRIGGER double_value BEFORE INSERT ON trigger_demo
FOR EACH ROW FOLLOWS increment_value SET NEW.v = NEW.v * 2;
INSERT INTO trigger_demo VALUES (2);
SELECT v FROM trigger_demo;
这道题,你掌握得怎么样?
掌握程度由你主动标记,阅读和收藏不会自动改变状态。