我在表中有一个名为“purged_on”的列,它是一个日期时间类型。我还有另一个名为“status”的列,此列可以具有0-9的值
我需要添加一个触发器来更新“purge_on”列,其中更新后的状态记录值的日期时间值从任何值更改为0.但如果记录从状态0更改为其他任何内容,那么我想要删除该记录的purged_on值。
我从未使用触发器,所以我不知道从哪里开始,或者这甚至可行。
我尝试了以下操作,但语法错误 CREATE TRIGGER update_purge_date 更新后 ON phone_calls FOR EACH ROW purged_on = CASE WHEN status = 0那么现在()ELSE NULL END;
由于
答案 0 :(得分:0)
你走了。希望这可以帮助。将content
替换为您的表名。
CREATE TRIGGER myPurgedOnTrigger BEFORE UPDATE ON content FOR EACH ROW
BEGIN
IF (NEW.status = 0 and NEW.status <> OLD.status) THEN
SET NEW.purged_on = current_timestamp();
END IF;
IF (NEW.status != 0 and NEW.status <> OLD.status) THEN
SET NEW.purged_on = null;
END IF;
END;
注意:这是BEFORE更新,而不是AFTER更新。这是因为您需要执行SET命令。如果您将其更改为AFTER然后尝试创建触发器,您将收到此错误:“触发后不允许更新NEW行。”