mysql5.5不能同时存在两个时间戳问题解决方案

问题描述:

需求:当创建这条记录时create_time和update_time都自动插入当前系统时间,当修改这条记录时,更新update_time
在这里插入图片描述
相关sql:
在这里插入图片描述
错误信息:

Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause


原因分析:


根据错误信息可知在DEFAULT或ON UPDATE子句中,只有一个TIMESTAMP列具有CURRENT_TIMESTAMP
在官网中找到问题说明:

As of MySQL 5.6.5, TIMESTAMP and DATETIME columns can be automatically initializated and updated to the current date and time (that is, the current timestamp). Before 5.6.5, this is true only for TIMESTAMP, and for at most one TIMESTAMP column per table.

翻译一下就是:

如MySQL的5.6.5,的TIMESTAMP和 DATETIME列可以被自动initializated并更新为当前日期和时间(即,当前的时间戳)。在 5.6.5 之前,这仅适用于TIMESTAMP,并且TIMESTAMP每个表最多一列。

然后查看了自己本地mysql版本:

#cmd窗口直接查询
mysql -V 
or
mysql --version
#登录客户端查询
select version();

在这里插入图片描述


解决方案:

1、升级mysql版本到5.6.5 及以上
2、触发器
我的解决方案是update_time采用时间戳,而create_time改为datetime类型,然后使用下面触发器,每次插入数据前把当前记录的create_time设置为当前系统时间.

CREATE TRIGGER `create_time_trigger` 
BEFORE INSERT ON `hospital_set` 
FOR EACH ROW 
SET NEW.create_time=NOW();

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值