美文网首页
记录下mysql的timestamp的两个属性

记录下mysql的timestamp的两个属性

作者: 月圆星繁 | 来源:发表于2019-08-22 00:18 被阅读0次

    同事提出bug说添加时间总是和更新时间一起变,只要更新时间变了,添加时间就会跟着一起变,而且值相同。我很懵逼,肯定是哪里代码写错了,然后各种看代码,各种断点日志,发现没有异常啊,最后实在想不通就看了下表的设计。我一脸懵。。。

    然后就有了下面的:

    timestamp有两个属性,分别是CURRENT_TIMESTAMPON 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字段。

    相关文章

      网友评论

          本文标题:记录下mysql的timestamp的两个属性

          本文链接:https://www.haomeiwen.com/subject/dywwsctx.html