为了记录日志并且要做性能分析,我们要把datetime类型字段精确到毫秒,而且要自动缺省值为当前时间。具体问题:https://blog.csdn.net/weixin_45357522/article/details/123554530
查阅MySQL文档,可以用datetime(3)或datetime(6),这样可以精确到毫秒或微秒,但我发现想给它赋缺省值(CURRENT_TIMESTAMP)时,一直提示无效缺省值错误。网上搜了好久,终究还是一无所获,最后经过多次试验,终于知道了解决办法,原来CURRENT_TIMESTAMP是可以带精度的,故分享给大家:

-- `csre-sit`.csre_msg_push_log definition

CREATE TABLE `log_table1` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `user_id` varchar(100) DEFAULT NULL COMMENT '用户id',
  `send_date` datetime(3) DEFAULT NULL COMMENT '发送方调用消息模块的时间',
  `receive_date` datetime(3) DEFAULT NULL COMMENT '消息模块接收的时间',
  `sent_media` varchar(1000) DEFAULT NULL COMMENT '发送的内容',
  `sender_id` varchar(100) DEFAULT NULL COMMENT '发送节点ID',
  `scen_log_id` bigint(20) DEFAULT NULL COMMENT '场景日志ID',
  `create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '记录创建时间',
  `update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '记录最后更新时间',
  `success` bit(1) DEFAULT b'1' COMMENT '是否发送成功',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=56737 DEFAULT CHARSET=utf8;

这样,每次新增记录或更新记录时,数据库就会自动把字段值更新为当前时间,并记录指定的精度

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐