You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL无字段变更时强制更新date_updated的相关疑问

MySQL自动更新时间戳的疑问解答

你给表中date_updated字段设置的DDL如下:

date_updated TIMESTAMP(6) DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL,

遇到的问题是:当更新语句没改任何字段值时,这个时间戳不会自动更新。根据MySQL文档的说明:

即使其他字段未变更,若要更新自动更新字段,需显式将其设置为应有的值(例如设置为CURRENT_TIMESTAMP)。

针对你的疑问,解答如下:

会不会触发双重更新?

不会。MySQL的处理逻辑是:当你在UPDATE语句里显式指定了date_updated = CURRENT_TIMESTAMP时,DDL中ON UPDATE CURRENT_TIMESTAMP的自动更新规则就不会再触发,不存在两次更新的情况。

保留两种设置是否正确?还是移除ON UPDATE?

两种方案都能满足需求,看你的实际场景:

  • 保留ON UPDATE:更省心。平时更新其他字段时,时间戳会自动更新;需要强制更新(哪怕没改其他字段)时,再手动加SET date_updated = CURRENT_TIMESTAMP即可,兼顾自动和手动的需求。
  • 移除ON UPDATE:适合要求所有更新都必须手动控制时间戳的场景,但这样每次更新都要手动写这个字段,容易遗漏,增加代码量。

内容的提问来源于stack exchange,提问作者v1shnu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 00:42:08