如何跟踪数据库表中多列的更改以进行审计?

时间:2011-04-05 05:52:48

标签: mysql database database-design

此问题已在SO上多次得到解答:herehere和外部链接herehere

我理解上述线程中描述的方法,并且我计划使用this方法。

但我在实施这一点时几乎没有什么基本疑虑。

在我的情况下,一行中的多个列可以同时更新,因此遵循正确的实现方式:

  1. 找出操作类型(INSERT / UPDATE / DELETE)
  2. 找出正在更新的列
  3. 在更新前阅读完整行
  4. 在Audit表中为每个要更改的列添加旧行和新值(以及其他详细信息)
  5. 更新表格

1 个答案:

答案 0 :(得分:4)

假设您使用的是最新版本的mySQL,我会亲自使用triggers

假设它们或多或少与我在其他产品(例如Oracle)中熟悉的那些一样工作,那么你的问题会变得更简单,因为你在行上放了一个“更新”触发器并用它来更新审计表对于您感兴趣的每个领域。

可能需要注意的是:如果您的应用程序仅以一个用户身份登录数据库(例如,如果您使用连接池,则是一种常见方法),记录实际用户身份可能会非常棘手。