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

Susan Sarandon
发布: 2024-11-01 02:53:28
原创
760 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!