MYSQL-TIMESTAMP数据类型的默认值与自动更新问题

时间:2021-02-08 10:00:30

今天早上写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。



先占个坑,有空再写写