UPDATE 后触发 UPDATE?

Goo*_*bot 14 mysql trigger update row-modification-time

我想制作一个触发器来记录任何更新的时间:

CREATE TRIGGER col_update
AFTER UPDATE ON col
FOR EACH ROW BEGIN
UPDATE col SET updated=NOW() WHERE id=NEW.id; // or OLD.id
END
Run Code Online (Sandbox Code Playgroud)

问题是当这个触发器尝试更新updated列时,它也是另一个更新事件,它运行触发器。这将创建一个无限循环,这是行不通的。

如何将更新时间存储在相应的列中?

我希望使用触发器,因为表中有很多列。如果我尝试手动设置更新时间,则需要修改许多查询。

dez*_*zso 19

改用BEFORE触发器,并将updated分配值的列设置为NEW.updated(这将是一个简单的分配,而不是UPDATE)。这样你就不会触发额外的UPDATEs。

你的触发器主体看起来就像

SET NEW.updated = NOW()
Run Code Online (Sandbox Code Playgroud)

我通常AFTER只将触发器用于修改其他表、BEFORE修改新(或更新)行或抑制DELETE