在mysql中,timestamp是经常用到的类型,大小是4个字节,取值范围是1970-2038。如果一个表中有多列timestamp字段,在使用的时候需要注意一些细节。
-
CREATE TABLE `test2` (
-
id INT(11) NOT NULL,
-
t1 TIMESTAMP,
-
t2 TIMESTAMP,
-
PRIMARY KEY (id)
-
) ENGINE=INNODB DEFAULT CHARSET=utf8
创建一个表,两个timestamp字段,t1、t2什么约束都不写,那么建表以后,查看表的DDL信息会是这样:
-
CREATE TABLE `test2` (
-
id int(11) NOT NULL,
-
t1 timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-
t2 timestamp NOT NULL DEFAULT \'0000-00-00 00:00:00\',
-
PRIMARY KEY (`id`)
-
) ENGINE=InnoDB DEFAULT CHARSET=utf8
可以看到,什么都不写,第一个timestamp字段默认就是DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;而第二个timestamp字段默认是0。
如果t1、t2我都手动指定DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP呢?效果会怎样?
结果,MySQL会报错,创建失败!
-
CREATE TABLE `test2` (
-
`id` INT(11) NOT NULL,
-
`t1` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-
`t2` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-
PRIMARY KEY (`id`)
-
) ENGINE=INNODB DEFAULT CHARSET=utf8
-
-
-
1 queries executed, 0 success, 1 errors, 0 warnings
-
查询:CREATE TABLE `test2` ( `id` int(11) NOT NULL, `t1` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `t2...
-
错误代码: 1293
-
Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
-
执行耗时 : 0 sec
-
传送时间 : 0 sec
-
总耗时 : 0.004 sec
错误提示:只允许一个timestamp字段(默认第一个)能够利用CURRENT_TIMESTAMP,不管是default,还是on update。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28912557/viewspace-1688276/
,如需转载,请注明出处,否则将追究法律责任。