0

非常に単純なテーブルを考えてみましょう:

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期待どおりに更新されます。しかし、管理者がこれらの行の一部が間違っていることに気付いたとします。データを更新するスクリプトは、過去 1 時間 (またはそれ以外) ' TEST ' を挿入しています。したがって、タイムスタンプを更新せずにデータを変更する必要があります。タイムスタンプは管理上のクリーンアップを表すものではないためです。


タイムスタンプだけを残すようにこの更新プログラムを変更できますか?

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

1 に答える 1

0

タイムスタンプを明示的にそれ自体に設定します。

update test set data = replace(data, '__TEST__', ''), modified = modified;
于 2013-11-07T15:37:37.993 に答える