我正在使用Sequel Pro应用程序来处理我的数据库。
使用Mysql 5.7。
我有以下表格结构。当我尝试重新排序'created'表格列时,我从mysql“错误的'创建'的默认值中收到错误。
尝试重新排序时,materials
表中没有行。
从我读过的所有内容来看,CURRENT_TIMESTAMP是正确的默认值。
CREATE TABLE `materials` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`modified` datetime NOT NULL ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
我的目标是在添加行时自动填充created
列。 modified
会在更改后自动更新为当前时间。
我错过了什么?
答案 0 :(得分:2)
CURRENT_TIMESTAMP仅在TIMESTAMP字段上可接受。 DATETIME字段必须保留为空的默认值,或者根本没有默认值 - 默认值必须是常量值,而不是表达式的结果。
相关文档:http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html
您可以通过在表格上设置插入后触发器来解决此问题,以填写"现在"任何新记录的价值。