在MySQL中更改数据捕获

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (253)

在我的数据库中,我希望在每次更改时跟踪列的值。在某种程度上,每次字段值更改时,我们都可以知道前一个值是什么。为每个更改分配时间戳真是太棒了。我使用MySQL作为数据库服务器。

提问于
用户回答回答于

触发器并不总是记录数据库中更改事件的最佳方式。因为一旦表的模式发生变化,触发器就会失效,从而导致实际的表操作失败。

对于mysql,您需要从二进制日志文件中捕获更改事件。Mysql提供API来读取二进制日志(发布版本5.6)。

您可能还想查看Flexviews,它提供Oracle,例如Materialized View日志来记录更改事件。

用户回答回答于

要做到这一点,您需要创建一个触发器,这是INSERT, UPDATE, DELETE在给定表上发生时触发的事件。

查看CREATE TRIGGER的文档。

对于你想要做的事情,你可能需要有一个辅助表,INSERT/UPDATE在主表上为每个插入一行,AFTER它包含更改行的ID,旧值,新值和时间戳。

扫码关注云+社区

领取腾讯云代金券