首页 > 解决方案 > Mysql ON UPDATE CURRENT_TIMESTAMP 与更新后将时间设置为 now() 的触发器

问题描述

在搜索其他内容时,我在我们的测试数据库中发现了这个触发器:

begin
     set NEW.UpdatedAt = now();
end

我很困惑...这与将列定义更改为以下内容有什么不同吗?

alter table TableName change UpdatedAt ON UPDATE CURRENT_TIMESTAMP;

我不想在触发器中这样做有什么好处吗?

标签: mysqldatabase-trigger

解决方案


对于早期版本的 MySQL,ON UPDATE仅适用于 datatype 的列TIMESTAMP。不支持该功能DATETIME或任何其他数据类型。

并且对于TIMESTAMP列,让表定义TIMESTAMP为自动设置两列可能有点棘手;在NOW()插入行时分配给一列,并NOW()在更新行时分配给不同的列。

触发器可以解决这些限制。


推荐阅读