触发更新

时间:2014-10-21 15:08:53

标签: mysql triggers sql-update

我想定义一个触发器来设置列(deleted_at)在'现在()'当一行被修改。我尝试过这样的事情=>

CREATE TRIGGER test AFTER INSERT ON articles
FOR EACH
ROW
BEGIN
    UPDATE articles SET updated_at = NOW() ;
END;

但我有这样的错误=>

  

#1064 - ''附近的语法错误第5行

3 个答案:

答案 0 :(得分:2)

要么删除BEGINEND(如果触发器中只有一个语句),要么删除不同的分隔符。您也不必在更新触发器中进行更新。将其设为BEFORE触发器并直接设置值。

DELIMITER $$
CREATE TRIGGER test BEFORE INSERT ON articles
FOR EACH
ROW
BEGIN
    SET NEW.updated_at = NOW() ;
END $$
DELIMITER ;

答案 1 :(得分:1)

问题是你在触发器本身更新你的表。

为什么不使用像这样的before insert触发器?

CREATE TRIGGER test BEFORE INSERT ON articles
FOR EACH
ROW
BEGIN
    set NEW.updated_at = NOW() ;
END;

这样您就可以确保每个插入内容都会更新字段。

答案 2 :(得分:0)

您必须更改行

 UPDATE articles SET updated_at = NOW() ;

这一个

 SET NEW.updated_at = NOW() ;