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

如果另一列值发生更改,如何创建MySQL触发器来更新datetime列?,mysql,triggers,Mysql,Triggers,我在一个表中有一个名为“”的列,它是日期时间类型。我还有另一个名为status的列。该列的值可以是0-9 我需要添加一个触发器,该触发器将使用状态从任意更改为0的更新记录值的日期时间值更新purge_on列。但是,如果记录从状态0更改为其他任何内容,则我希望删除该记录的值 我从未使用过触发器,所以我不确定从哪里开始,或者这是否可行 我尝试了以下操作,但出现语法错误 创建触发器更新\清除\日期 更新后 每行的电话通话 当状态为0时,清除\u on=CASE,然后现在ELSE NULL END 谢谢

我在一个表中有一个名为“”的列,它是日期时间类型。我还有另一个名为status的列。该列的值可以是0-9

我需要添加一个触发器,该触发器将使用状态从任意更改为0的更新记录值的日期时间值更新purge_on列。但是,如果记录从状态0更改为其他任何内容,则我希望删除该记录的值

我从未使用过触发器,所以我不确定从哪里开始,或者这是否可行

我尝试了以下操作,但出现语法错误 创建触发器更新\清除\日期 更新后 每行的电话通话 当状态为0时,清除\u on=CASE,然后现在ELSE NULL END


谢谢

给你。希望这有帮助。用表名替换内容

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;

注意:这是更新前,而不是更新后。这是因为您需要执行SET命令。如果将其更改为AFTER,然后尝试创建触发器,则会出现以下错误:AFTER触发器中不允许更新新行。

您更改了问题,现在更新答案。。。答案已更新。它对我有用。我测试了它。我的问题仍然是一样的,但我添加了我尝试过的内容。使用您提供的代码,我会发现一个语法错误,仍然用表名替换内容。如果这不能解决问题,那么告诉我错误是怎么说的。我这样做了,但没有成功。我需要换新的和旧的吗?不,错误是什么?在你试图重新创建触发器之前,你是不是已经放下了它?不要把触发器放在我的purgedontrigger上;然后运行我的代码。