需要:如果UPDATE没有更改表中的值,则更新时的mysql当前时间戳

时间:2012-12-04 19:16:27

标签: mysql timestamp

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

ID / Price / last_updated

“last_updated”列有..

  • 类型:timestamp
  • 标准:CURRENT_TIMESTAMP
  • as Attribute :CURRENT TIMESTAMP ON UPDATE
  • as Extra :CURRENT TIMESTAMP ON UPDATE

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

所以我想,如果新值与现有值不同,则只更新“更新”。

如果在执行mysql_query(UPDATE ...)后没有更改该值,我怎样才能获得放入表中的当前时间戳?

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:0)

试试这个:

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'