Mysql ON UPDATE CURRENT_TIMESTAMP 与更新后将时间设置为 now() 的触发器

Mysql ON UPDATE CURRENT_TIMESTAMP vs. trigger that sets time to now() after update

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

begin
     set NEW.UpdatedAt = now();
end

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

alter table TableName change UpdatedAt ON UPDATE CURRENT_TIMESTAMP;

在触发器中执行此操作是否有任何优势?

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

并且对于 TIMESTAMP 列,使用要自动设置的两个 TIMESTAMP 列来定义 table 可能有点棘手;在插入行时将 NOW() 分配给一列,并在更新行时将 NOW() 分配给另一列。

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