跟踪MySQL中的数据更改(更新/删除)

时间:2012-12-06 20:52:52

标签: mysql data-tracing

我有一个db模式,其中使用外键引用存储用户数据,这些外键是管理员定义的。此外,有一些数据存储时没有主键,但我有其他限制,以避免冗余和其他问题。

由于用户“更新”其信息时应用程序的要求,我必须从“更新”表中删除所有用户记录,然后重新插入所有用户的记录。 (我已经调查了所有其他选项)

现在由于我的搜索解决方案(solr),我需要跟踪用户数据的更改(更新/删除)。我计划将最后提交的数据与实时数据进行比较。我担心每20分钟左右运行一次存储过程是多么可持续,是否有更好的方法可以使用SQL跟踪数据?

1 个答案:

答案 0 :(得分:2)

您可以创建一个更改表,其中包含与原始表相同的列以及另一个名为“UpdatedOn”的列。然后设置一个触发器,在原始表更改时将原始值写入此更改表。

实施例: 原表:

Name | Address | City
Jane Doe | 1 Main St. | New York

更改为原始表:

Name | Address | City
Jane Doe | 2 Smith St. | Dubuque

...触发更改表的插入:

Name | Address | City | UpdatedOn
Jane Doe | 1 Main St. | New York | 2012-01-01

有关于在mysql中使用触发器的信息:http://dev.mysql.com/doc/refman/5.0/en/triggers.html