如果使用java技术发生任何更改,我会尝试检测某些 sql server 2008 表的所有行。
我调查了一些方法,例如使用时间戳列,更改跟踪机制,更改数据捕获。
但是所有上述方法都需要在数据库中进行一些自定义,如下所示:
1.Timestamps列应出现在每个表中。
2.更改跟踪需要每个表中的主键。
3.Change Data Capture需要创建一些系统表和其他自定义。
我需要一些方法,在数据库中不需要如此繁重的自定义,因为数据库是至关重要的,不允许更改配置设置。
有人可以帮助或建议这方面的事情吗?
答案 0 :(得分:0)
以下更改可以完成数据审核
已插入新数据 - 如果当前表中存在标识密钥且在历史表的最新版本数据中不可用
在哪里C.IdentityColumn NOT IN(从历史H中选择identitycolumn)
删除数据 - 如果历史表的最新版本数据中存在标识密钥,则当前表中不存在。
H.IdentityColumn NOT IN(从当前C中选择identitycolumn)
数据已更新 - 当前表和最新版本的历史记录表中都存在IF身份密钥,并且修改了任何一个列数据
WHERE(C.IdentityColumn = H.IdentityColumn) 和 ( C.Col1< C. H.Col1 要么 C.Col2< Col2> H.Col2 要么 C.ColN<> H.ColN )
C - 当前表格 H - 历史表
使用上述逻辑,可以在单独的审计表中跟踪修改后的数据,该表可以包含记录ID,字段名称,旧值,新值,修改,修改者,修改日期/时间等列