同事提出bug说添加时间总是和更新时间一起变,只要更新时间变了,添加时间就会跟着一起变,而且值相同。我很懵逼,肯定是哪里代码写错了,然后各种看代码,各种断点日志,发现没有异常啊,最后实在想不通就看了下表的设计。我一脸懵。。。
然后就有了下面的:
timestamp
有两个属性,分别是CURRENT_TIMESTAMP
和ON UPDATE CURRENT_TIMESTAMP
两种,使用情况分别如下:
-
CURRENT_TIMESTAMP
当要向数据库执行insert
操作时,如果有个timestamp
字段属性设为
CURRENT_TIMESTAMP
,则无论这个字段有没有set值都插入当前系统时间 -
ON UPDATE CURRENT_TIMESTAMP
当执行update
操作是,并且字段有ON UPDATE CURRENT_TIMESTAMP
属性。则字段无论值有没有变化,它的值也会跟着更新为当前UPDATE
操作时的时间。
当时的表设计如下:
表设计
CREATE TABLE `templet_cust` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(60) DEFAULT NULL COMMENT '名称',
`customer` varchar(30) DEFAULT NULL COMMENT '客户名称',
`mobile` char(40) DEFAULT NULL COMMENT '手机号码',
`adduser` varchar(30) DEFAULT NULL COMMENT '添加人',
`addtime` timestamp NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP COMMENT '添加时间',
`remark` text COMMENT '备注',
`address` varchar(90) DEFAULT NULL COMMENT '地址',
`updatetime` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
就这样找到了问题的所在,不是代码的问题,是表设计的问,后面更加实际的需求,合理的修改了
addtime
字段。
网友评论