mysql hibernate timestamp update_time 自动更新时间问题

博客探讨了在MySQL中使用Hibernate时,如何处理timestamp字段的自动更新问题。当更新数据时,如何确保update_time字段自动更新为当前时间。提出了在更新前手动设置当前时间的解决方案,并讨论了触发器作为替代方案的优缺点。还列举了TIMESTAMP的不同设置选项。
摘要由CSDN通过智能技术生成

(这是博主第一篇真正意义上的原创,该问题来源于工作中遇到的小问题)

需求分析:

一个表中,有两个字段,createtime和updatetime。

1 当insert的时候,sql两个字段都不设置,会设置为当前的时间

2 当update的时候,sql中两个字段都不设置,updatetime会变更为当前的时间


设计数据库如下:

该数据表需要一个数据的创建时间create time,和一个数据最近更新时间last update time。

CREATE TABLE `test` (
  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT 'auto increase',
  `imsi` varchar(20) NOT NULL COMMENT 'imsi',
  `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'last_update time',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'data create time',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 COMMENT='test'

timestamp设置默认值是当前时间 Default CURRENT_TIMESTAMP

timestamp设置随着表变化而自动更新是ON UPDATE CURRENT_TIMESTAMP

 可以设置2个timestape字段 ,把一个字段设置为默认值更新, 另一个不自动更新。

mysql5.5不能同时设置两个字段为CURRENT_TIMESTAMP,但mysql5.6是可以的,

所以以上数据库设计是能正常实现需要的update time 和create time功能的:

测试如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值