我的表格中有这一列:
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
更新,无论信息是否相同。谁能帮忙?
当行中任何其他列的值从其当前值更改时,自动更新列会自动更新为当前时间戳。如果所有其他列都设置为其当前值,自动更新列将保持不变。
来自文档
UPDATE users SET name = 'new', food = 'new',signup_date = Now() where id = 1;
也许您可以尝试使用 Now() 更新列?
如果该值没有变化,则不会触发自动更新。你可以自己轻松尝试一下。
MYSQL更新查询应该如下
ALTER TABLE users
CHANGE COLUMN `signup_date` `signup_date` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ;
但我建议将更新时间字段保留在不同的字段中,例如“modified_date”,这样您就可以跟踪注册日期和上次修改日期