如果另一列值发生更改,如何创建MySQL触发器来更新datetime列?

时间:2014-01-12 23:34:10

标签: mysql triggers

我在表中有一个名为“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;

由于

1 个答案:

答案 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行。”

相关问题