我正在尝试创建表格
CREATE TABLE myTable1
(
id INT,
date_validated TIMESTAMP,
date_registered TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
然而,它不起作用。我得到错误
Incorrect table definition; there can be only one TIMESTAMP column
with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
当我切换两个时间戳语句(如下所示)时,它正在工作。
CREATE TABLE myTable1
(
id INT,
date_registered TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
date_validated TIMESTAMP
);
知道为什么会这样吗?
这对我来说很奇怪,从未遇到过这样的问题。
答案 0 :(得分:3)
TIMESTAMP实际上类似于一个DATETIME,但是您声明的第一个TIMESTAMP会自动初始化:
http://dev.mysql.com/doc/refman/5.0/en/timestamp-initialization.html
因此,当您第一次编写没有属性的TIMESTAMP时,MySQL会在内部添加“DEFAULT CURRENT_TIMESTAMP”进行转换。当MySQL遇到你明确设置CURRENT_TIMESTAMP的第二个TIMESTAMP时,就会发生冲突。
如果你在第一行定义了CURRENT_TIMESTAMP,那么它就是多余的 - 因为你在第二行中没有指定任何内容,所以第二行没有指定任何默认值,也不会发生冲突。
从上面的链接中,“它不必是表中第一个自动初始化或更新为当前时间戳的TIMESTAMP列。但是,要指定自动初始化或更新其他TIMESTAMP列,必须禁止自动第一个属性。“