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子句中只能有一个TIMESTAMP列,其CURRENT_TIMESTAMP”。
我的问题是一个错误吗?因为可以肯定,我有两个TIMESTAMP列,但是其中只有一个具有默认定义。当我删除startedStamp时,我没有任何错误。
根据MySQL手册5.5版,自动初始化和更新TIMESTAMP
TIMESTAMP
既不指定DEFAULT CURRENT_TIMESTAMP也不ON UPDATE CURRENT_TIMESTAMP指定,则与指定DEFAULT CURRENT_TIMESTAMP和相同ON UPDATE CURRENT_TIMESTAMP。
DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP
CREATE TABLE t1 ( ts TIMESTAMP );
然而,
如果为常数,则默认值为给定值。在这种情况下,该列根本没有自动属性。
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 );
小提琴