You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建带条件的有效SQL触发器?

触发器语法错误修复方案

你的代码存在以下4个问题,对应修复方案如下:

  • 遗漏了MySQL IF语句必填的THEN关键字,标准语法为IF 条件 THEN 执行逻辑 END IF;
  • SET语句末尾遗漏了语句结束符分号
  • 字段名拼写错误:需求是更新publishingDate,但代码中误写为多了一个d的PublishingdDate
  • 缺少状态变更判断:原有逻辑会在每次更新行且Published为true时都覆盖日期,而非仅在Published从false变为true时触发更新,不符合业务需求

修正后可用代码

delimiter !

CREATE TRIGGER `vc`.`Articles_Updated_trigger`
BEFORE UPDATE
ON `Articles` FOR EACH ROW
BEGIN
  -- 仅当Published从未发布变为发布状态时才更新发布日期,避免后续修改其他字段时覆盖发布时间
  IF OLD.Published = FALSE AND NEW.Published = TRUE THEN
    SET NEW.publishingDate = CURRENT_TIMESTAMP;
  END IF;
END !

delimiter ;

注意事项

  • 注意和你表中的实际字段名保持大小写一致,如果你表中publishingDate是其他拼写形式需要对应调整
  • 触发器创建完成后务必执行delimiter ;恢复默认语句分隔符,避免后续执行其他SQL语句报错

内容的提问来源于stack exchange,提问作者Paul Zaslavskij

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 11:06:01