我想定义一个触发器来设置列(deleted_at)在'现在()'当一行被修改。我尝试过这样的事情=>
CREATE TRIGGER test AFTER INSERT ON articles
FOR EACH
ROW
BEGIN
UPDATE articles SET updated_at = NOW() ;
END;
但我有这样的错误=>
#1064 - ''附近的语法错误第5行
答案 0 :(得分:2)
要么删除BEGIN
和END
(如果触发器中只有一个语句),要么删除不同的分隔符。您也不必在更新触发器中进行更新。将其设为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() ;