CREATE TABLE AlarmHistory
(
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
value DOUBLE NOT NULL,
startedStamp TIMESTAMP NOT NULL,
finishedStamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
);
尝试创建上述表时,出现以下错误:“SQL 错误 (1293):表定义不正确;DEFAULT 或 ON UPDATE 子句中只能有一个带有 CURRENT_TIMESTAMP 的 TIMESTAMP 列”。
我的问题是这是一个错误吗?因为当然,我有两个 TIMESTAMP 列,但其中只有一个有默认定义。当我删除startStamp时,我没有错误。
根据 MySQL 手册,版本 5.5,自动初始化和更新TIMESTAMP http://dev.mysql.com/doc/refman/5.5/en/timestamp-initialization.html
两者都没有DEFAULT CURRENT_TIMESTAMP
nor ON UPDATE CURRENT_TIMESTAMP
,这与指定两者相同DEFAULT CURRENT_TIMESTAMP
and ON UPDATE CURRENT_TIMESTAMP
.
CREATE TABLE t1 (
ts TIMESTAMP
);
However,
对于常量,默认值是给定值。在这种情况下,该列根本没有自动属性。
CREATE TABLE t1 (
ts TIMESTAMP DEFAULT 0
);
所以,这应该有效:
CREATE TABLE AlarmHistory
(
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
value DOUBLE NOT NULL,
startedStamp TIMESTAMP DEFAULT 0 NOT NULL,
finishedStamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
);
fiddle http://sqlfiddle.com/#!2/317de
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)