mysql - Mysql ON UPDATE CURRENT_TIMESTAMP 与更新后将时间设置为 now() 的触发器
问题描述
在搜索其他内容时,我在我们的测试数据库中发现了这个触发器:
begin
set NEW.UpdatedAt = now();
end
我很困惑...这与将列定义更改为以下内容有什么不同吗?
alter table TableName change UpdatedAt ON UPDATE CURRENT_TIMESTAMP;
我不想在触发器中这样做有什么好处吗?
解决方案
对于早期版本的 MySQL,ON UPDATE
仅适用于 datatype 的列TIMESTAMP
。不支持该功能DATETIME
或任何其他数据类型。
并且对于TIMESTAMP
列,让表定义TIMESTAMP
为自动设置两列可能有点棘手;在NOW()
插入行时分配给一列,并NOW()
在更新行时分配给不同的列。
触发器可以解决这些限制。