创建和更新时的 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中文网其他相关文章!