在5.5到5.6.4版本里,对于DEFAULT CURRENT_TIMESTAMP子句,只能TIMESTAMP类型列上指定。
而从5.6.5开始(也包括5.7),DEFAULT CURRENT_TIMESTAMP子句可以指定到TIMESTAMP或者DATETIME类型列上。
比如在5.5中:
mysql> select version();
+------------+
| version() |
+------------+
| 5.5.48-log |
+------------+
1 row in set (0.00 sec)
mysql> use test;
Database changed
mysql> create table t1(id int, dt timestamp not null DEFAULT CURRENT_TIMESTAMP, dt1 datetime not null DEFAULT CURRENT_TIMESTAMP);
ERROR 1067 (42000): Invalid default value for 'dt1'
mysql>
而在5.7中:
mysql> select version();
+------------+
| version() |
+------------+
| 5.7.11-log |
+------------+
1 row in set (0.00 sec)
mysql> use test;
Database changed
mysql> create table t1(id int, dt timestamp not null DEFAULT CURRENT_TIMESTAMP, dt1 datetime not null DEFAULT CURRENT_TIMESTAMP);
ERROR 1050 (4

在MySQL 5.5版本中,DEFAULT CURRENT_TIMESTAMP仅适用于TIMESTAMP列,而在5.6.5及更高版本(包括5.7)中,它可以用于TIMESTAMP和DATETIME列。这表明从5.6.5开始,数据库对默认当前时间戳的支持更加灵活。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



