我有一个有80张桌子的产品。我的DB是MYSQL。所以我将为DB实现审计功能。为此,我必须为表中的每个记录更改维护一个日志。我必须为每个记录和用户等记录旧值和新值....
所以我现在有两种方法可以考虑。
1)维护每个表的日志表。意味着80个日志表
2)维护一个表以记录历史
然后,一旦我完成方法,我就可以使用触发器将记录插入表中。所以我的表格不一样。有些有20列,有些有5列。 因此,将它们带到一个历史表中是我无法想象的事情。
那怎么办呢?
有没有更好的方法来做到这一点而不是在DB中保存记录?
商业解决方案中使用的方法有哪些?
答案 0 :(得分:1)
最佳商业解决方案是: 使用触发器。
对于那些想要维护 LOG
的人,必须在所有桌面上使用触发器并且您可以使用不同类型的触发器,例如插入,更新,删除时间戳和用户ID,以便可以跟踪谁在何时以及执行了哪个操作?
如果你觉得有用,接受这个答案。
答案 1 :(得分:0)
我们创建一个"审计表"每张桌子。但我们只审核了一些表,而不是所有表。我们在表上使用触发器将行插入审计表。
审计表包含与审计表相同的所有列,以及一些其他列... auto_increment id
,action
(INSERT,DELETE,UPDATE OLD,UPDATE NEW),日期和时间,等。插入审计表的每一行基本上都是整行的副本。
我们使用该模式,因为它实现相当简单,并在审计表上分发活动。
对于" logging",我们使用单个表。但是我们不会将每个表的每一列都存储在日志表中;这更像是录制消息。 "审计"表格用于详细跟踪每行所做的每一项更改。
注意:对于带有CASCADE的外键,受级联影响的行不会触发触发器。我们在触发器中考虑到这一点,以确保我们在引用受影响的表中记录行的图像。