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
)。这样你就不会触发额外的UPDATE
s。
你的触发器主体看起来就像
SET NEW.updated = NOW()
Run Code Online (Sandbox Code Playgroud)
我通常AFTER
只将触发器用于修改其他表、BEFORE
修改新(或更新)行或抑制DELETE
。
归档时间: |
|
查看次数: |
41466 次 |
最近记录: |