问题描述:
需求:当创建这条记录时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版本:
mysql -V
or
mysql
select version();
解决方案:
1、升级mysql版本到5.6.5 及以上 2、触发器 我的解决方案是update_time采用时间戳,而create_time改为datetime类型,然后使用下面触发器,每次插入数据前把当前记录的create_time设置为当前系统时间.
CREATE RIGGER `create_time_trigger`
BEFORE INSERT ON `hospital_set`
FOR EACH ROW
SET NEW.create_time=NOW();
|