1

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

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

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

4

1 回答 1

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

于 2012-12-07T00:03:54.283 回答