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

und*_*ack 6 mysql database database-design

这个问题已经多次得到解答了:这里,这里和外部链接在这里这里.

我理解上面线程中描述的方法,我打算使用这种方法.

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

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

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

p.m*_*ino 4

假设您使用的是足够新的 mySQL 版本,我个人会使用触发器

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

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