【问题标题】:mysql - timestamp column of another column value changemysql - 另一个列值更改的时间戳列
【发布时间】:2021-07-08 09:42:29
【问题描述】:

假设我有一个包含几列的 mySQL 表:

id、姓名、工作、jobUpdatedAt

每当 job 列特别更改时,我希望 mySQL 自动更新 jobUpdatedAt 的时间戳。 (所以如果只是名称改变,它不会更新)

这样的事情可能吗?

谢谢

【问题讨论】:

  • 如果您想纯粹从 MySQL 处理,您可能需要一个触发器。否则,您可以创建执行更新的应用程序逻辑。

标签: mysql timestamp


【解决方案1】:
CREATE TRIGGER trigger_name
BEFORE UPDATE
ON table_name
FOR EACH ROW
SET NEW.jobUpdatedAt = CASE WHEN OLD.job = NEW.job
                            THEN OLD.jobUpdatedAt
                            ELSE CURRENT_TIMESTAMP
                            END;

jobUpdatedAt 只会在job 被事实更新时才会被更新。

如果查询尝试显式更新jobUpdatedAt,将被保存。

https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=1b48bce653eb9a1d778e406fa5af894a

【讨论】:

  • WHEN OLD.job <=> NEW.job 也会考虑空值。
  • @forpas 是的。但我怀疑 OP 是否需要这样做……如果是这样,他会编辑。
  • @Akina 谢谢!这正是我所需要的。谷歌没有产生任何结果,可能是因为我什至不知道如何称呼它。
猜你喜欢
  • 2021-01-06
  • 2016-01-23
  • 1970-01-01
  • 2015-06-21
  • 2023-01-07
  • 1970-01-01
  • 2023-04-01
  • 2012-01-30
  • 2020-03-21
相关资源
最近更新 更多