【问题标题】:Needed: mysql current timestamp on update also if UPDATE does not change values in table需要:如果 UPDATE 不更改表中的值,则更新时的 mysql 当前时间戳
【发布时间】:2012-11-22 12:20:15
【问题描述】:

我有一个包含 3 列的数据库:

ID / 价格 / last_updated

“last_updated”列有 ..

  • 作为类型:时间戳
  • 作为标准:CURRENT_TIMESTAMP
  • 作为 属性:更新时的当前时间戳
  • 作为 Extra:更新时的当前时间戳

当我运行 mysql_query(UPDATE...) 来更改价格时,一些价格不会改变。但是,在这些情况下,last_updated 值与之前保持一致(在这种情况下为:0000-00-00 00:00:00,因为记录没有更改)。

所以我猜,如果新值与当前值不同,UPDATE 只会“更新”。

如何将当前时间戳放入表中,即使在执行 mysql_query(UPDATE...) 后值未更改?

【问题讨论】:

    标签: mysql timestamp


    【解决方案1】:

    在您的查询中,始终使用NOW() 更新last_updated 字段。像这样:

    UPDATE table SET price = ?, last_updated = NOW() WHERE id = ??
    

    【讨论】:

      【解决方案2】:

      试试这个:

      ALTER TABLE myTable 
      MODIFY last_updated TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
      

      一次性修复,在现有表上:

      update myTable set last_updated=now() where last_updated='0000-00-00 00:00:00'
      

      【讨论】:

      • 这只会在创建新行时将 last_updated 的值设置为 current_timestamp,如果您希望在每次更新时更改此值,可以在此表上使用触发器
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-10
      • 2011-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多