【问题标题】:MySQL timestamp auto updatingMySQL 时间戳自动更新
【发布时间】:2011-07-27 14:02:59
【问题描述】:

我有一个包含几个时间戳字段的表,但是在某些字段默认为 NULL 时遇到了一些问题。

在我的 users 表中,我有这些时间戳表:

(field),(NULL),(default val)

deleted_on YES NULL
last_change_attemp YES NULL
newpass_time YES NULL
last_login YES NULL
created NO 0000-00-00 00:00:00
updates YES NULL

当我在 phpMyAdmin 中编辑一行时,我正在编辑的行已经检查了所有 NULL 字段的 NULL 复选框,除了第一个字段:*deleted_on*。如果我手动选中该复选框,它允许我将该字段保持为 NULL。

当我通过查询更新另一个字段时,它会自动在第一个字段上执行 current_timestamp。这是预期的吗?

【问题讨论】:

    标签: mysql time timestamp


    【解决方案1】:

    我再次阅读了文档并注意到了这段文字

    为其他 TIMESTAMP 列指定自动默认值或更新 比第一个,你必须抑制自动初始化和 通过显式更新第一个 TIMESTAMP 列的行为 为其分配一个常量 DEFAULT 值(例如,DEFAULT 0 或 默认“2003-01-01 00:00:00”)。然后,对于另一个 TIMESTAMP 列, 规则与第一个 TIMESTAMP 列的规则相同,除了 如果您同时省略 DEFAULT 和 ON UPDATE 子句,则不会自动 发生初始化或更新。

    http://dev.mysql.com/doc/refman/5.0/en/timestamp.html

    所以暂时我将字段默认为 0000-00-00 00:00:00 以防止自动更新。

    【讨论】:

      【解决方案2】:

      phpMyAdmin 对时间戳和 null 做了一些奇怪的事情,尤其是当列标记为 CURRENT_TIMESTAMP 时

      我不知道为什么。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-27
        • 1970-01-01
        • 1970-01-01
        • 2012-11-14
        • 2015-11-19
        • 1970-01-01
        • 2013-09-28
        相关资源
        最近更新 更多