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

MySQL automatic update for specific column instead of whole record

我有一个 table APPLEVARIETY。 它有以下列:

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

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

我已经查看了 MySQL 手册,关于 Whosebug 的其他问题,当然也广泛使用了 google 但一无所获。

所以换句话说:有没有什么方法可以指定特定的列 ON UPDATE?有可能还是我走错了方向?

不,这不可能使用 ON UPDATE CURRENT_TIMESTAMP 这将在更新任何列时更新。 但是,您可以使用触发器实现相同的效果。为此,您首先需要从 table 定义中删除 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 ;