如何使mysql在每次修改行操作时自动将列更新为当前时间戳?
Posted
技术标签:
【中文标题】如何使mysql在每次修改行操作时自动将列更新为当前时间戳?【英文标题】:how to make mysql automatically update column to current timestamp on every modify row operation? 【发布时间】:2012-10-13 00:56:21 【问题描述】:我的 mysql 表中有 2 列:created_on 和 modified_on。我已将 created_on 列的默认值设置为 CURRENT_TIMESTAMP。因此,在表中的每个插入操作中,created_on 列正确地将值设置为当前时间戳。但是我希望当我更新同一行时,“modified_on”列在更新时将值更新为时间戳。如果我知道我使用任何函数/触发器来执行此操作,或者是否有任何内置的 mysql 功能用于相同
【问题讨论】:
使用触发器自动更新 你在使用任何 ORM 框架吗? 我使用的是休眠 3.0 @user1767274 也许你觉得这个问题很有用***.com/questions/221611/… 我建议不要使用触发器,因为它总是添加一些“魔法”。 【参考方案1】:尝试使用ON UPDATE
关键字更改您的表格,例如:
ALTER TABLE `tableName`
CHANGE `modified_on` `modified_on` TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP;
或者您可以在插入时添加默认值,如:
ALTER TABLE `tableName`
CHANGE `modified_on` `modified_on` TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP
NOT NULL DEFAULT CURRENT_TIMESTAMP ;
您还可以在创建表时将ON UPDATE
定义为时间戳数据类型。
【讨论】:
【参考方案2】:为此编写一个触发器
【讨论】:
以上是关于如何使mysql在每次修改行操作时自动将列更新为当前时间戳?的主要内容,如果未能解决你的问题,请参考以下文章