解决MySQL不能有两个CURRENT_TIMESTAMP

点点圈 提交于 2020-02-27 01:12:53

背景

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

MySQL5.5的版本, 在建表的时候如果同时有两个字段是timestamp且都默认值是current_timestamp则会报上面的错误。

下面是尝试过的两种方案,都行不通

Bad case

 `insert_time` timestamp DEFAULT now(),
 `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`insert_time` timestamp NOT NULL,
 `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

Good case

`insert_time` timestamp NULL DEFAULT NULL,
`update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`insert_time` timestamp NULL DEFAULT '0000-00-00 00:00:00',
`update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

结论

1.mysql 5.5 不支持两个timstamp的字段同事设置为 默认的CURRENT_TIMESTAMP

2.解决方案只有加触发器或者绕过

3.绕过的方案也是不能自动同时更新两个字段的内容,要么在插入语句,要么在更新语句里要对一个字段使用now()

参考

https://dbarobin.com/2014/09/01/the-solution-of-created-and-last-updated-timestamp-exist-simultaneously/

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!