是否有任何表更改跟踪工具的mysql将所有更改记录到其他表?

时间:2009-10-08 11:46:09

标签: php mysql

我正在研究PHP(CodeIgniter框架),Mysql,AJAX,XAMPP,JQUERY上的项目管理系统。我需要一个可自定义的表更改跟踪工具,它将所有更改记录到mysql的同一数据库中的另一个表中。基本上我需要有一个表,它将在数据库表上包含更新,插入和删除的日志详细信息,其中哪些列已更改为(摘要)。这样我就可以从该表创建一个报告,其中包含对任何特定表的更改。

如果没有工具,我已经开始研究自己的解决方案,我正在寻找两个选项。

一个在所有表上都有触发器,这些触发器将为每个更新创建一行,并插入旧数据和新更改的数据。但在这里我需要外部用户输入作为用户的更新评论。如何从触发器插入该数据。这有些复杂。请建议我任何解决方案。

第二一个是我将跟踪PHP的更改并在每次更新和插入时插入,这是更多工作但更容易实现。

您更喜欢哪一个?如果不建议我使用一个工具来处理所有这些并插入到同一数据库中的新表中。或者我错过了更简单的事情?

3 个答案:

答案 0 :(得分:3)

我绝对更喜欢在应用程序代码中而不是在DB中执行此操作。 ORM非常适合处理这类事情,因为它提供了一种跟踪和拦截变更的简便方法。

如果您对数据库访问有明智的抽象,那么拦截PHP代码中的任何数据库调用并在那里进行日志记录应该非常简单。当然,如果您手动构建SQL然后直接调用数据库,则没有中心位置可以记录更改。

答案 1 :(得分:2)

使用存储过程进行所有更新/插入/删除 该过程应该采用执行给定任务所需的所有参数以及将包含注释的一个参数。然后只需更新/插入/删除并在日志表中创建一条记录(带注释)。

ps:如果您需要插入注释(与触发器相同的问题),则无法看到如何使用某些工具。

答案 2 :(得分:1)

phpmyadmin支持自最新版本

以来的数据库复制和跟踪更改