0

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)
4

2 に答える 2

7

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.

On UPDATE CURRENT_TIMESTAMP を追加する必要があります

CREATE TABLE t1 (
  id int, ts2 TIMESTAMP DEFAULT CURRENT_TIMESTAMP
            ON UPDATE CURRENT_TIMESTAMP);

編集 - テーブル変更コマンド

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を参照してください。

于 2013-02-19T09:06:41.520 に答える
5

追加On UPDATE CURRENT_TIMESTAMP

MySQL クエリ:

ALTER TABLE `table_name` CHANGE `date_field` `date_field` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 

それが役に立てば幸い !

于 2013-10-20T13:16:46.400 に答える