首页 > 数据库 > mysql教程 > MySQL 表可以有多个带有 CURRENT_TIMESTAMP 的 TIMESTAMP 列吗?

MySQL 表可以有多个带有 CURRENT_TIMESTAMP 的 TIMESTAMP 列吗?

Patricia Arquette
发布: 2024-11-30 08:35:11
原创
146 人浏览过

Can MySQL Tables Have Multiple TIMESTAMP Columns with CURRENT_TIMESTAMP?

在 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板