一尘不染

在MySQL 4.0中同时具有Created和Last Updated timestamp列

mysql

我有以下表模式;

CREATE TABLE `db1`.`sms_queue` (
  `Id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  `Message` VARCHAR(160) NOT NULL DEFAULT 'Unknown Message Error',
  `CurrentState` VARCHAR(10) NOT NULL DEFAULT 'None',
  `Phone` VARCHAR(14) DEFAULT NULL,
  `Created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `LastUpdated` TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP,
  `TriesLeft` tinyint NOT NULL DEFAULT 3,
  PRIMARY KEY (`Id`)
)
ENGINE = InnoDB;

失败并显示以下错误:

ERROR 1293 (HY000): Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause.

我的问题是,我可以同时拥有这两个领域吗?还是我必须在每次交易期间手动设置LastUpdated字段?


阅读 275

收藏
2020-05-17

共1个答案

一尘不染

MySQL 5.5 文档中

表中的一个TIMESTAMP列可以将当前时间戳记作为初始化该列的默认值,作为自动更新值或同时作为两者。
当前时间戳不能是一列的默认值,而另一列的自动更新值是不可能的。

MySQL
5.6.5中的

更改

以前,每个表最多可以自动将TIMESTAMP列初始化或更新为当前日期和时间。 此限制已解除。
任何TIMESTAMP列定义都可以具有DEFAULT CURRENT_TIMESTAMP和ON UPDATE
CURRENT_TIMESTAMP子句的任意组合。此外,这些子句现在可以与DATETIME列定义一起使用。有关更多信息,请参见TIMESTAMP和DATETIME的自动初始化和更新。

2020-05-17