【问题标题】:MySQL on update CURRENT_TIMESTAMP save same value for all recordsMySQL 在更新 CURRENT_TIMESTAMP 时为所有记录保存相同的值
【发布时间】:2019-10-09 02:39:52
【问题描述】:

我有一个名为test_table 的表,如下所示: https://ibb.co/QN8f328 我为 updated_dt 列设置的更新事件是 CURRENT_TIMESTAMP。

但是当新行插入到表中时,updated_dt 列的值没有变化,也没有CURRENT_TIMESTAMP 值,像这样 https://ibb.co/Jvb7zcw

出了什么问题?感谢您的帮助

【问题讨论】:

    标签: mysql timestamp


    【解决方案1】:

    如果你删除了怎么办

    CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
    

    改成

    CURRENT_TIMESTAMP
    

    并使用查询:

    UPDATE table_name
    SET column1 = value1, updated_dt = now(), ...
    

    仅供参考:D

    【讨论】:

      【解决方案2】:

      当您更新具有较少记录的整个表时,更新将在几分之一秒内完成。

      这就是为什么您在 updated_dt 所有行中看到相同的 date_time。

      如果您尝试在表中进行手动更新,

      例如:

      查询:

      UPDATE test_table 
      SET request_status = 'TEST'
      WHERE id = 193;
      

      然后您可以在 updated_dt 列中看到更改,这将是您的 current_timestamp。

      但是当新行插入到表中时,updated_dt 列的值没有改变,也不是 CURRENT_TIMESTAMP 值

      这是因为您已经为 created_dtupdated_dt 设置了 current_timestamp

      所以基本上做的是当你插入它时,它会在两列中存储CURRENT_TIMESTAMP。现在,当您更新该行时,只有 updated_dt 列会发生变化。

      选项:

      还有另一个选项NULL ON UPDATE CURRENT_TIMESTAMP。您可以在 updated_dtcolumn 中将此设置为默认值。

      它的作用是,当将新记录插入test_table 时,只有created_dt 列具有current_timestamp 值,updated_dt 将是NULL。现在更新该列后,您可以在 updated_dt 中看到 current_timestamp。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-08
        • 2011-07-09
        • 1970-01-01
        • 1970-01-01
        • 2011-06-21
        • 1970-01-01
        • 2012-12-30
        • 2014-04-04
        相关资源
        最近更新 更多