今天早上写MYSQL代码时发现,被更新的行里的那些被定义为timestamp类型的字段在没有显式更新的时候也自动更新了。于是我心里就有个疑问,这种timestamp类型的数据是否会真的自动更新?虽然我之前看到一些资料上说timestamp会有默认值。好奇心驱使下决定查下文档:
http://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html
先创建一张测试表
select version() ;
5.6.26
drop table if exists tst1 ;
create table tst1
(
a tinyint
,b datetime
,c timestamp
) ;
show create table tst1 ;
CREATE TABLE `tst1` (
`a` tinyint(4) DEFAULT NULL,
`b` datetime DEFAULT NULL,
`c` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8
可以看到,timestamp是带有默认值CURRENT_TIMESTAMP并且在更新时如果没有显示指定值会隐式的更新为CURRENT_TIMESTAMP。
先占个坑,有空再写写