2

我目前正在从事一个项目,在该项目中我必须跟踪关系数据库中修改的元组。这应该包括更新的元组,但也包括插入和删除的元组。我的问题是实现这一目标的最佳方法是什么?我有几个自己的想法,但也许有一些我没有想到的更简单/更好的方法,或者已经存在一个可以做到这一点的项目。

该项目的最终目标是适用于不同供应商的关系数据库,但第一个实现将使用 MySQL 数据库。以后可以支持其他数据库系统。但是,如果适用于 MySQL 的解决方案可以轻松地适应另一个数据库,那就太好了。

我的第一个想法是解析日志文件。但是,我不确定这些日志文件是否包含实际修改的元组,而且我可以想象这些日志文件并不总是可用(例如在共享主机上)。

我的第二个想法是在应用程序级别拦截查询。当执行 INSERT、DELETE 或 UPDATE 查询时,可以解析这些查询,并且可以预先确定它们将影响的元组。对于 INSERT 操作,这只是插入的元组,对于 DELETE 或 UPDATE 操作,可以通过在新的 SELECT 语句中应用 WHERE 子句来识别元组。

最后,我想补充一点,在这个开发阶段,性能并不是一个重要因素。

如果需要更多详细信息,我很乐意提供。

4

2 回答 2

2

使用触发器捕获 INSERT、UPDATE 和 DELETE 并将您的条目记录到新表中。您可以使用该表上的时间戳来记录事务发生的时间。将来您可以查询该表以获取您的修改信息。

于 2010-01-13T15:15:06.140 回答
0

这将需要一些依赖于数据库的功能,但您可以根据您的架构封装它们,但您可以使用数据库触发器,我通常建议不要这样做,除了审计这一点。在每种触发器中,您可以简单地将所需的任何信息写入日志表。只有一个建议。

于 2010-01-13T15:15:05.093 回答