首页  >  文章  >  数据库  >  如何在 MySQL 中使用 CURRENT_TIMESTAMP 管理多个 TIMESTAMP 列?

如何在 MySQL 中使用 CURRENT_TIMESTAMP 管理多个 TIMESTAMP 列?

Susan Sarandon
Susan Sarandon原创
2024-11-01 02:53:28761浏览

How to Manage Multiple TIMESTAMP Columns with CURRENT_TIMESTAMP in MySQL?

使用 CURRENT_TIMESTAMP 管理多个 TIMESTAMP 列

在 MySQL 中,使用 CURRENT_TIMESTAMP 默认值定义多个 TIMESTAMP 列可能会导致错误“表定义不正确” ; DEFAULT 或 ON UPDATE 子句中只能有一个带有 CURRENT_TIMESTAMP 的 TIMESTAMP 列。”为了克服这个限制,请在最近的 MySQL 版本(例如 5.6.25)中考虑以下方法:

解决方案:

修改表定义如下:

<code class="sql">CREATE TABLE `msgs` (
    `id` INT PRIMARY KEY AUTO_INCREMENT,
    `msg` VARCHAR(256),
    `ts_create` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    `ts_update` TIMESTAMP NOT NULL,
    CONSTRAINT UPDATE_ON_CHANGE_ts_update
        FOREIGN KEY (`ts_update`) REFERENCES `msgs` (`ts_create`)
        ON DELETE SET NULL
        ON UPDATE CURRENT_TIMESTAMP
)</code>

在此修改后的架构中:

  • ts_create 保留为具有 CURRENT_TIMESTAMP 默认值的常规 TIMESTAMP 列。
  • ts_update 被定义为具有 NOT NULL 约束的 TIMESTAMP 列.
  • 在 ts_update 和 ts_create 之间创建外键约束,允许从 ts_create 到 ts_update 级联更新。
  • ON UPDATE CURRENT_TIMESTAMP 操作通过外键约束应用于 ts_update,确保每当修改 ts_create 时,ts_update 列都会更新为当前时间戳。

这种方法允许您保持跟踪记录创建和更新时间戳的所需行为,同时避免 MySQL 错误。

以上是如何在 MySQL 中使用 CURRENT_TIMESTAMP 管理多个 TIMESTAMP 列?的详细内容。更多信息请关注PHP中文网其他相关文章!

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