在 DEFAULT 或 ON UPDATE 子句中仅允许使用 CURRENT_TIMESTAMP 的一个 TIMESTAMP 列
MySQL 的历史代码限制将表限制为只有一个 TIMESTAMP 列CURRENT_TIMESTAMP 为 DEFAULT 或 ON更新子句。但是,此限制已在最新版本的 MySQL 中取消。
遗留错误:
考虑以下表定义:
CREATE TABLE `foo` ( `ProductID` INT(10) UNSIGNED NOT NULL, `AddedDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `UpdatedDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP );
尝试创建此表将导致以下结果错误:
Error Code : 1293 Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
MySQL 5.6.5 及更高版本中的解决方案:
从 MySQL 5.6.5 开始,此限制已被删除。现在,任何 TIMESTAMP 或 DATETIME 列都可以具有 DEFAULT CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP 子句的任意组合。
根据 MySQL 5.6.5 发行说明:
Previously, at most one TIMESTAMP column per table could be automatically initialized or updated to the current date and time. This restriction has been lifted. Any TIMESTAMP column definition can have any combination of DEFAULT CURRENT_TIMESTAMP and ON UPDATE CURRENT_TIMESTAMP clauses.
因此,提供的表定义遗留错误中现在可以成功创建:
CREATE TABLE `foo` ( `ProductID` INT(10) UNSIGNED NOT NULL, `AddedDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `UpdatedDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP );
以上是MySQL 表可以有多个带有 CURRENT_TIMESTAMP 的 TIMESTAMP 列吗?的详细内容。更多信息请关注PHP中文网其他相关文章!