Mysql中字段类型之时间戳大坑

    

一 、环境说明:

在目前项目中,有这样的一张表,用来记录会议的相关信息,例如:会议的内容、会议的参会人员、会议的地点、会议的状态(会议是否已结束、会议是否被撤销)、会议的开始时间以及该条信息的创建时间。

会议的开始时间和信息的创建时间的类型都设置为了timestamp,并且默认值是CURRENT_TIMESTAMP。

 

二、如何入坑的

目前有这样的一个需求:用户发起的会议可以手动的进行撤销的操作,后台的逻辑自然需要更新该条会议信息,到了这里问题就来了:我手动更新了该条信息之后,之前设置好的会议开始时间,居然变成了该条sql语句执行成功时的时间了,这样就有点忒尴尬的。

 

三、坑中半死不活

在遇到了这个问题之后,然后就自然而然的检查自己的代码,看看自己执行sql的同时,是否把时间给更新了,发现了一下没有,突然人就瞢逼了,what,还能出现这个情况,然后同事提醒了一下,是不是表中字段类型设置为了timestamp的缘故,查了下百度,真的是这个原因。

 

四、解决方案

由于自己在建立表的时候,将时间字段都设置为了时间戳timestamp,并且默认时间为CURRENT_TIMESTAMP,所以在执行更新语句的时间,该会议开始时间的字段也会进行更新,以保证时间是当前系统的时间。从而导致了会议时间突然变更的这个神马情况。

 

自己在工作遇到了这种问题,在这里记录下来,以便后期不要在采坑。

 

        

原文地址:https://www.cnblogs.com/Prozhu/p/7112794.html