如何使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在每次修改行操作时自动将列更新为当前时间戳?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL为每一行自动存储日期时间

mysql如何让时间属性不自动更新

mysql每次update数据,自动更新对应表中时间字段

MySQL - 如何修改列默认值?

用一条查询语句将列变成行 Sqlserver

MySQL - 如何将列转为行?