一尘不染

MySQL错误-``这里只能是一个TIMESTAMP列,在DEFAULT子句中有CURRENT_TIMESTAMP''

sql

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时,我没有任何错误。


阅读 122

收藏
2021-05-23

共1个答案

一尘不染

根据MySQL手册5.5版,自动初始化和更新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
);

小提琴

2021-05-23