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

在MySQL中跟踪数据更改(更新/删除),mysql,data-tracing,Mysql,Data Tracing,我有一个数据库模式,其中使用外键引用存储用户数据,这些外键是管理员定义的。此外,有些数据存储时没有主键,但我有其他限制,以避免冗余和其他问题 由于应用程序的要求,当用户“更新”其信息时,我必须从“更新”表中删除所有用户记录,然后重新插入所有用户记录。(我已经研究了所有其他选项) 现在,由于我的搜索解决方案(solr),我需要跟踪用户数据的更改(更新/删除)。我计划将最后提交的数据与实时数据进行比较。我担心存储过程每隔20分钟左右运行一次会有多么可持续,有没有更好的方法用SQL跟踪数据?您可以创建

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

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


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

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

例如: 原始表格:

Name | Address | City
Jane Doe | 1 Main St. | New York
Name | Address | City
Jane Doe | 2 Smith St. | Dubuque
更改为原始表格:

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中使用触发器的信息: