对于 TIMESTAMP 和 DATETIME 列,可以把当前时间戳设置为其默认值、自动更新值或者两者都设置:
--对于auto-initialized 列,如果新插入的记录没有指定值,那么设置其值为当前时间戳。
--对于auto-updated 列,如果这条记录的其他列的值发生变化,那么这一列就会被更新为发生变化时的时间戳。如果不想被更新,需要显式地指定当前值。
如何开启:
要想设置这个属性,可以在列定义的时候,指定 DEFAULT CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP ,两者出现的顺序随意
CREATE TABLE t1 (
-> id int,
-> ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-> dt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
-> );
mysql> INSERT INTO t1 VALUES (1, default, default);
mysql> INSERT INTO t1(id) VALUES (2);
mysql> select * from t1;
+------+---------------------+---------------------+
| id | ts | dt |
+------+---------------------+---------------------+
| 1 | 2017-08-07 02:18:37 | 2017-08-07 02:18:37 |
| 2 | 2017-08-07 02:18:41 | 2017-08-07 02:18:41 |
+------+---------------------+---------------------+
2 rows in set (0.00 sec)
插入数据时,选择了默认值,被自动初始化为插入时的时间戳。
测试2:只设置自动初始化
mysql> CREATE TABLE t2 (
-> id int,
-> ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-> dt DATETIME DEFAULT CURRENT_TIMESTAMP
-> );
+------+---------------------+---------------------+
2 rows in set (0.00 sec)
ts列和td列只设置了自动初始化,所以当其他字段变化时,不会自动更新
示例3:只设置自动更新
Database changed
mysql> CREATE TABLE t3 (
-> id int,
-> ts TIMESTAMP DEFAULT '1997-01-01 00:00:01' ON UPDATE CURRENT_TIMESTAMP,
-> dt DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP
-> );
Query OK, 0 rows affected (0.97 sec)
http://blog.csdn.net/qingsong3333/article/details/76862392