首页 > 解决方案 > 如何使用条件创建有效的 SQL 触发器?

问题描述

我坚持创建 SQL 触发器,publishingDatePublished当前行的字段变为真时更新。我尝试了多种声明变体,但每次都出现语法错误。谷歌搜索没有给出当前案例的关键。希望,你能帮上忙。我的代码如下。我使用的验证器:https ://ru.rakko.tools/tools/36/

delimiter !

CREATE TRIGGER `vc`.`Articles_Updated_trigger`
BEFORE UPDATE
ON `Articles` FOR EACH ROW
BEGIN
  IF new.Published = TRUE 
    SET new.PublishingdDate = CURRENT_TIMESTAMP
  END IF;
END !

标签: mysqlsqltriggers

解决方案


如果要获取状态更改的所有行,则需要比较 OLD 和 NEW 以检测更改

delimiter $$

CREATE TRIGGER `vc`.`Articles_Updated_trigger`
BEFORE UPDATE
ON `Articles` FOR EACH ROW
BEGIN
  IF OLD.Published = FALSE AND NEW.Published = TRUE THEN
    SET new.PublishingdDate = CURRENT_TIMESTAMP;
  END IF;
END$$
DELIMITER ;

推荐阅读