我过go 使用过的一种简单方法基本上就是创建第二个表,它的 struct 反映了我想要审计的那个表,然后在主表上创建一个UPDATE/DELETE触发器.在更新/删除记录之前,通过触发器将当前状态保存到审计表.

虽然有效,但审计表中的数据并不是最有用或最容易报告的.我想知道是否有人有更好的方法来审核数据更改?

这些记录不应该有太多的更新,但它是高度敏感的信息,所以对客户来说,所有更改都要经过审计并轻松报告,这一点很重要.

推荐答案

您预计这张表的写入量与读取量之比是多少?

我使用了单个审核表,其中列有Table、Column、OldValue、NewValue、User和ChangeDateTime-足够通用,可以处理数据库中的任何其他更改,虽然大量数据被写入到该表中,但是关于该数据的报告足够稀疏,可以在一天中使用率较低的时段运行.

Added:

Database相关问答推荐

避免数据库联接的两个查询替换

如何替换对象数组内的数组元素

无法向 SiriDB 添加新副本

MySQL FIND_IN_SET 的对面

Ruby on Rails:before_save 字段为小写

数据库设计 - 类别(categories)和子类别(sub-categories)

如何在 SQL Server 中将索引从一个表复制到另一个表

为什么null不等于null false

我应该为我创建的新创建的 PostgreSQL 模式使用什么正确的文件扩展名?

MySQL JDBC Driver中cachePrepStmts和useServerPrepStmts有什么区别

使用 PHPUnit 进行数据库测试的最佳实践

为什么会一直出现Table is marked for deletion的消息?

如何在数据库中搜索和替换字符串的所有实例?

cURL 和 PHP 显示1

Django Atomic Transaction 是否锁定数据库?

如何使用 django 判断 postgresql 数据库中是否存在某些内容?

SQLite3 UNIQUE 约束失败错误

如何通过数据库链接执行 Oracle 存储过程

Data Mapper 是不是比 Active Record 更现代的趋势

位图索引有何帮助?