请求调试MariaDB表更新触发器代码:自动更新DateModifica字段
MariaDB 更新触发器调试方案
你的代码存在两个核心问题:
- 使用
AFTER UPDATE触发器时,内部再执行UPDATE语句会触发循环调用,导致死循环或数据库报错。 - 无需额外执行
UPDATE操作,直接在更新前修改待写入的记录字段即可。
以下是修正后的完整代码:
DELIMITER // CREATE TRIGGER update_DateMod BEFORE UPDATE ON table1 FOR EACH ROW BEGIN SET NEW.DateModifica = CURRENT_TIMESTAMP(); END // DELIMITER ;
关键说明:
BEFORE UPDATE:在记录更新操作生效前触发,直接修改NEW对象(即将写入数据库的新记录)的字段,避免额外更新操作。FOR EACH ROW:指定触发器对每一条被更新的记录生效,这是行级触发器的必填声明。NEW.DateModifica:直接引用待更新记录的目标字段,赋值CURRENT_TIMESTAMP()即可自动填充当前时间。- 分隔符修改:由于触发器体包含分号,临时将SQL分隔符改为
//,防止数据库提前截断触发器定义,完成后再改回默认的;。
内容的提问来源于stack exchange,提问作者Roberto Rossi
相关产品推荐
相关产品推荐

