首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尽管正在更新记录,但MySQL中的时间戳仍未更新

尽管正在更新记录,但MySQL中的时间戳仍未更新
EN

Stack Overflow用户
提问于 2013-02-19 16:39:59
回答 2查看 8.9K关注 0票数 0

我的MySQL数据库中有一个包含时间戳的列。无论我更新记录多少次,我的时间戳都不会更新。有什么我应该做的使它自动更新吗?

在Stackoverflow中搜索其他问题,大多数问题都是相反的,这真的非常令人困惑!例如,这一条,Should I use field 'datetime' or 'timestamp'? (看一下评分最高的答案)

谢谢

下面是我的表结构

代码语言:javascript
复制
+----------------+-------------+------+-----+-------------------+----------------+
| Field          | Type        | Null | Key | Default           | Extra          |
+----------------+-------------+------+-----+-------------------+----------------+
| Num            | int(11)     | NO   | PRI | NULL              | auto_increment |
| mem_name       | varchar(50) | NO   |     | NULL              |                |
| mem_id         | int(11)     | NO   |     | NULL              |                |
| car_number     | varchar(11) | NO   |     | NULL              |                |
| firstcall_time | timestamp   | NO   |     | CURRENT_TIMESTAMP |                |
| tow_time       | datetime    | NO   |     | NULL              |                |
+----------------+-------------+------+-----+-------------------+----------------+
6 rows in set (0.00 sec)

One Record:

+-----+----------+--------+------------+---------------------+---------------------+
| Num | mem_name | mem_id | car_number | firstcall_time      | tow_time            |
+-----+----------+--------+------------+---------------------+---------------------+
|   1 | Jakey    |  54564 | SHA34345   | 2013-02-19 16:14:12 | 2013-02-19 16:32:45 |
+-----+----------+--------+------------+---------------------+---------------------+
1 row in set (0.00 sec)

After Updating:

+-----+----------+--------+------------+---------------------+---------------------+
| Num | mem_name | mem_id | car_number | firstcall_time      | tow_time            |
+-----+----------+--------+------------+---------------------+---------------------+
|   1 | Tommy    |  54564 | SHA34345   | 2013-02-19 16:14:12 | 2013-02-19 16:32:45 |
+-----+----------+--------+------------+---------------------+---------------------+
1 row in set (0.00 sec)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-19 17:06:42

您的时间戳没有更新的主要原因是您没有在表创建语句中添加ON UPDATE CURRENT_TIMESTAMP子句。

使用alter table命令更改它并修改列

代码语言:javascript
复制
With both DEFAULT CURRENT_TIMESTAMP and ON UPDATE CURRENT_TIMESTAMP, 
the column has the current timestamp for its default value and 
is automatically updated to the current timestamp.

您必须在更新CURRENT_TIMESTAMP时添加

代码语言:javascript
复制
CREATE TABLE t1 (
  id int, ts2 TIMESTAMP DEFAULT CURRENT_TIMESTAMP
            ON UPDATE CURRENT_TIMESTAMP);

编辑-表格修改命令

代码语言:javascript
复制
alter table <tablename> modify <columnName> TIMESTAMP DEFAULT CURRENT_TIMESTAMP
        ON UPDATE CURRENT_TIMESTAMP;

参考http://dev.mysql.com/doc/refman/5.0/en/timestamp-initialization.html

票数 7
EN

Stack Overflow用户

发布于 2013-10-20 21:16:46

添加On UPDATE CURRENT_TIMESTAMP

MySQL查询:

代码语言:javascript
复制
ALTER TABLE `table_name` CHANGE `date_field` `date_field` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 

希望它能帮上忙!

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14953115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档