背景
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()
参考
来源:oschina
链接:https://my.oschina.net/csp277/blog/3168414