'created'的默认值无效,但使用CURRENT_TIMESTAMP进行DATETIME

时间:2016-08-31 03:37:26

标签: mysql

我正在使用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会在更改后自动更新为当前时间。

我错过了什么?

1 个答案:

答案 0 :(得分:2)

CURRENT_TIMESTAMP仅在TIMESTAMP字段上可接受。 DATETIME字段必须保留为空的默认值,或者根本没有默认值 - 默认值必须是常量值,而不是表达式的结果。

相关文档:http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html

您可以通过在表格上设置插入后触发器来解决此问题,以填写"现在"任何新记录的价值。

参考:Invalid default value for 'dateAdded'