使用相同信息更新时,ON UPDATE CURRENT_TIMESTAMP 不起作用

问题描述 投票:0回答:4

我的表格中有这一列:

date_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

我注意到,当我尝试使用相同的信息更新行时,时间戳不会改变。

例如我的表(用户)是这样的:

+----+-------+----------------+-----------+-------------+
| id | name  | food           | confirmed | signup_date |
+----+-------+----------------+-----------+-------------+
|  1 | John  | Casserole      | Y         | 2012-04-11 12:46:55  |
|  2 | Sandy | Key Lime Tarts | N         | 2012-04-14 11:02:02  |
+----+-------+----------------+-----------+-------------+

当我运行此查询时,一切正常(

signup_date
按预期更新):

UPDATE users SET name = 'new', food = 'new' where id = 1;

但是,当我运行此命令(插入准确信息)时,

signup_date
与前一个保持不变:

UPDATE users SET name = 'John', food = 'Casserole' where id = 1;

我需要帮助获取

signup_date
更新,无论信息是否相同。谁能帮忙?

mysql sql timestamp mariadb
4个回答
6
投票

当行中任何其他列的值从其当前值更改时,自动更新列会自动更新为当前时间戳。如果所有其他列都设置为其当前值,自动更新列将保持不变。

来自文档


2
投票
UPDATE users SET name = 'new', food = 'new',signup_date = Now() where id = 1;

也许您可以尝试使用 Now() 更新列?


1
投票

如果该值没有变化,则不会触发自动更新。你可以自己轻松尝试一下。


-2
投票

MYSQL更新查询应该如下

ALTER TABLE  users   
CHANGE COLUMN `signup_date` `signup_date` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ;

但我建议将更新时间字段保留在不同的字段中,例如“modified_date”,这样您就可以跟踪注册日期和上次修改日期

© www.soinside.com 2019 - 2024. All rights reserved.