mysql设置update时间字段自动更新

数据库表设计阶段中有个最佳实践,需要在每个表中预留创建时间create_time, 修改时update_time字段

阿里巴巴编码规约中建议命名为gmt_create,gmt_modifie,并且类型datetime

在这里插入图片描述

其中,create_time字段在一般开发中会设置默认值为“CURRENT_TIMESTAMP”,create_time设置默认为“CURRENT_TIMESTAMP”。

在之前的开发过程中,习惯将它们的数据类型设置为datetime,然后在业务逻辑中设置修改时间为当前时间,也就是需要sql中显示的设置修改时间。

当前的需求是:

当新增记录的时候,mysql自动将系统的当前时间set到创建时间和更新时间这两个字段中。
当更新记录的时候,mysql只update更新时间字段的时间,而不修改创建时间字段对应的值。

解决方法很简单,只需要找到表中对应的创建时间和更新时间的字段,将其修改为下列代码所示。

创建时间字段

creat_time datetime NULL DEFAULT CURRENT_TIMESTAMP

更新时间字段

update_time datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

核心的DDL语句为

ON UPDATE CURRENT_TIMESTAMP

注意: 因此我们就不需要在代码中对记录设置创建时间和修改时间了。

在navicat中的操作为,

表—右击—>点击 设计表

选中相应的时间字段,设置字段数据类型为CURRENT_TIMESTAMP,同时选中 根据当前时间戳更新 ,这里navicat会帮我们设置 ON UPDATE CURRENT_TIMESTAMP 属性。

create_time的 设置
navicat的操作navicat的操作

update_time配置

在这里插入图片描述

这样,我们的程序在不用代码中操作时间的情况下每次更新都能够实时将修改时间(create_time)记录到到数据库的记录。

  • 10
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值