今天早上写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。
先占个坑,有空再写写
本文深入探讨了MySQL中timestamp类型数据的自动更新机制,通过创建测试表并使用文档验证,展示了timestamp默认初始化为CURRENT_TIMESTAMP并在更新时隐式更新为CURRENT_TIMESTAMP的功能。

2181

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



