【问题标题】:Why does 'on update CURRENT_TIMESTAMP' doesn't update when same data is updated?为什么更新相同数据时“更新 CURRENT_TIMESTAMP”不更新?
【发布时间】:2013-02-26 11:34:04
【问题描述】:

当我有一个包含以下数据的表时:

StatementID(int AI) | created_by(int) | changed_when(onUpdate CURRENT_TIMESTAMP)
--------------------------------------------------------------------------------
7                   | 4               | 2013-02-26 12:05:57  
8                   | 4               | 2013-02-26 12:20:12

我有以下查询:

mysql_query('
  UPDATE table 
  SET created_by = 4 
  WHERE statementID=8');

当我编辑语句 info(other tbl) 并且它由与上次相同的用户编辑时,changed_when 不会更新。

当我用相同的数据更新created_by 时,为什么字段changed_when 没有改变?

【问题讨论】:

    标签: mysql database timestamp sql-update


    【解决方案1】:

    此行为是设计使然。 onUpdate CURRENT_TIMESTAMP 字段在字段值更改时更新,而不是在它们保持不变时更新。

    要实现你似乎想要的,你可以做

    UPDATE table 
    SET created_by = 4,
    changed_when = null,
    WHERE statementID = 8
    

    【讨论】:

    • 谢谢这是解决方案:)
    【解决方案2】:

    如果在任何更新语句中,如果值保持不变,则时间戳值不会被更新。

    来自 Mysql 站点

    如果列是自动更新的,那么当行中任何其他列的值从其当前值更改时,它会自动更新为当前时间戳。 The column remains unchanged if all other columns are set to their current values。为了防止该列在其他列更改时更新,请将其显式设置为其当前值。

    解决办法

    To update the column even when other columns do not change, explicitly set it to the value it should have (for example, set it to CURRENT_TIMESTAMP).

    Refer

    【讨论】:

      猜你喜欢
      • 2012-12-30
      • 1970-01-01
      • 1970-01-01
      • 2020-09-20
      • 2019-01-29
      • 2011-07-04
      • 1970-01-01
      • 2020-04-12
      • 1970-01-01
      相关资源
      最近更新 更多