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

MySQL 中多个 TIMESTAMP 列可以有 CURRENT_TIMESTAMP 吗?

Linda Hamilton
Linda Hamilton原创
2024-10-29 21:26:29983浏览

Can Multiple TIMESTAMP Columns Have CURRENT_TIMESTAMP in MySQL?

创建和更新时的 MySQL CURRENT_TIMESTAMP

定义 MySQL 表时,最好包含时间戳来跟踪记录的创建和修改。但是,尝试定义两个以 CURRENT_TIMESTAMP 作为默认值或更新值的 TIMESTAMP 字段时,可能会出现错误。

错误消息

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

原因

5.6.25 之前的 MySQL 版本仅允许使用 CURRENT_TIMESTAMP 作为默认值或更新值来定义单个 TIMESTAMP 列。

解决方案

在 MySQL 5.6.25 及更高版本中,可以定义多个 TIMESTAMP 列,每个列都有自己的 CURRENT_TIMESTAMP 设置。从MySQL 8.0开始,这个限制已经被完全取消。因此,对于 5.6.25 及更高版本,以下表定义应该可以正常工作:

CREATE TABLE `msgs` (
    `id` INT PRIMARY KEY AUTO_INCREMENT,
    `msg` VARCHAR(256),
    `ts_create` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    `ts_update` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)

此定义将创建一个包含两个 TIMESTAMP 字段 ts_create 和 ts_update 的表,该表将自动更新为当前分别在记录创建和更新时的时间戳。

以上是MySQL 中多个 TIMESTAMP 列可以有 CURRENT_TIMESTAMP 吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn