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

时间:2018-08-23 03:05:31

标签: mysql sql timestamp mariadb

我的表格中有此列:

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更新的帮助,无论信息是否相同。谁可以提供帮助?

4 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

  1. 自动更新的列将自动更新为当前 该行中任何其他列的值更改时的时间戳记 从当前值。如果出现以下情况,自动更新的列将保持不变 所有其他列均设置为其当前值。

阅读documentation

答案 2 :(得分:1)

如果该值未更改,则不会触发自动更新。您可以轻松地自己尝试。

答案 3 :(得分:-1)

MYSQL更新查询应如下

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

但是我建议将更新时间字段保留在另一个字段中,例如“ modified_date”,以便您可以同时跟踪注册日期和上次修改日期