我希望我的一个MySQL表包含2个timestamp列,这两个列都是在没有客户端帮助的情况下自动设置的:一个在插入时初始化一次:
`added` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
另一个在插入时进行了初始化,并在每次更新时进行了更新:
`updated` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
但这不是这样的:
[Err] 1293-错误的表格定义;DEFAULT或ON UPDATE子句中只能有一个带有CURRENT_TIMESTAMP的TIMESTAMP列
有已知的解决方法吗?
不仅有解决方法,还有解决方案:升级到MySQL 5.6.5或更高版本,并对此提供支持。
请参阅:MySQL 5.6.6 TIMESTAMP列和DEFAULT值
{edit}由于不能进行升级,因此您可以将第一列设置为普通的timestamp列,并创建一个触发器来设置插入记录时的一个时间戳。然后,您可以使用创建另一个列DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
,以便在插入和更新时获得时间戳。
CREATE TRIGGER task_creation_timestamp BEFORE INSERT ON tasks
FOR EACH ROW
SET NEW.created = NOW();
我从这个答案中偷走了这个触发器。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句