MySQL自动更新特定列而不是整个记录

时间:2015-04-02 09:31:22

标签: mysql timestamp auto-update

我有一张桌子APPLEVARIETY。 它包含以下列:

  • ID
  • 家族
  • 颜色
  • description(TEXT)
  • description_last_update_time(TIMESTAMP)

对于后一列,我想使用'ON UPDATE CURRENT_TIMESTAMP'。但是,如果更新至少一个其他列(id,family,color),这将导致时间戳更新。

相反,我想指定如果仅更新描述列,description_last_update_time将获得CURRENT_TIMESTAMP。它应该忽略其余列的更新。

我查看了MySQL手册,关于stackoverflow的其他问题,当然广泛使用谷歌,但一无所获。

换句话说:是否有某种方式使用ON UPDATE指定某个列?它甚至是可能还是我向错误的方向前进?

1 个答案:

答案 0 :(得分:2)

不可能使用ON UPDATE CURRENT_TIMESTAMP这将在任何列更新时得到更新。 但是,您可以使用触发器实现相同的目的。为此,您首先需要从表定义中删除ON UPDATE CURRENT_TIMESTAMP。 触发器看起来像

delimiter //

create trigger APPLEVARIETY_update before update on APPLEVARIETY
for each row 
begin
  if new.description <> old.description then
    set new.description_last_update_time = now();
  end if;
end;//

delimiter ;