我有一个列,其中包含MySQL数据库中的时间戳.无论我更新记录多少次,我的时间戳都不会更新.我有什么办法让它自动更新吗?
在Stackoverflow中搜索其他问题,大多数人都说相反,它真的很混乱!例如,这个, 我应该使用字段'datetime'还是'timestamp'?(看看评分最高的答案)
谢谢
这是我的表格结构
+----------------+-------------+------+-----+-------------------+----------------+
| 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)
Run Code Online (Sandbox Code Playgroud)
您的时间戳未更新的主要原因是您ON UPDATE CURRENT_TIMESTAMP在表创建语句中没有添加子句.
使用alter table命令更改它并修改列
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.
Run Code Online (Sandbox Code Playgroud)
您必须添加On UPDATE CURRENT_TIMESTAMP
CREATE TABLE t1 (
id int, ts2 TIMESTAMP DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP);
Run Code Online (Sandbox Code Playgroud)
编辑 - 表修改命令
alter table <tablename> modify <columnName> TIMESTAMP DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP;
Run Code Online (Sandbox Code Playgroud)
请参阅http://dev.mysql.com/doc/refman/5.0/en/timestamp-initialization.html
加 On UPDATE CURRENT_TIMESTAMP
MySQL查询:
ALTER TABLE `table_name` CHANGE `date_field` `date_field` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你 !