获取列的最后更新时间

dar*_*moh 8 mysql information-schema row-modification-time

此命令给出表的上次更新日期

SELECT UPDATE_TIME
FROM   information_schema.tables
WHERE  TABLE_SCHEMA = 'MyDB'
AND TABLE_NAME = 'MyTable'
Run Code Online (Sandbox Code Playgroud)

但我想找到表的特定列的上次更新时间。我不能使用触发器,因为我想知道系统表中特定列的上次更新时间。

我希望我能很好地解释我的问题。

Rol*_*DBA 6

没有任何系统表(即INFORMATION_SCHEMA 数据库中没有任何内容)在任何地方记录了这种信息。换句话说,没有本地机制可以在列更改上放置任何时间戳。任何时候

  • 任何行中的一列或多列更改
  • 添加了一个新行
  • 旧的被删除
  • 任何类型的 ALTER TABLE

中的UPDATE_TIMEINFORMATION_SCHEMA.TABLES已更新。

建议

这可能是一个难以下咽的苦丸,但您必须做到以下几点:

  • 创建一个记录的自定义表
    • 首要的关键
    • 列名
    • 该列的旧值
    • 该列的新值
    • 更改的时间戳
  • 创建BEFORE UPDATE触发器来比较新旧列,如果不匹配则记录

结语

如果您为几个表和几列进行自定义,这可能还不错。