如何在执行UPDATE时单独保留自动更新时间戳

时间:2013-11-07 15:37:38

标签: mysql timestamp sql-update

考虑一个非常简单的表:

create table test (
  data varchar(2048),
  modified timestamp default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP
) engine=InnoDB;

我们插入一些行:

insert into test (data) values (
  ('some data'),
  ('some other data'),
  ('etc...')
);

现在通常,我们希望这些行上的时间戳自动更新。 some data的所有者可能会碰到他们的行:

update test set data='some different data' where data='some other data';

modified标记将按预期和期望更新。但是,假设管理员意识到其中一些行是错误的 - 更新数据的脚本已经过去一小时(或其他)插入了“ TEST ”。因此,我们需要在不更新时间戳的情况下更改数据 - 因为时间戳并不代表管理清理。


是否可以修改此更新以保留时间戳?

update test set data = replace(data, '__TEST__', '');

1 个答案:

答案 0 :(得分:0)

明确将时间戳设置为自身:

update test set data = replace(data, '__TEST__', ''), modified = modified;