0

我们的 grails 应用程序创建了用于存储域对象的普通表。

出于欺诈和监管的目的,必须对关键表进行审计,即每次更改都应与更改人员和时间一起记录。

在以前的项目中,我们创建了一个新的审计模式,并将普通表的副本放入其中,每个表都与普通表相同,除了:

  1. 4 个附加列:userId、IP、DataChanged、Action(更新、删除、插入)
  2. ID 不再唯一
  3. 没有约束,没有PK,没有索引。
  4. 在称为审计的模式中。

在他上。在项目中,Oracle DB 编写了一个复杂的脚本来从普通模式中读取表和列,并在审计模式中创建相应的表/列,然后在普通 DB 表上创建插入/更新/删除触发器。

我们需要为 MySQL 做类似的事情。

为了安全,我们需要在数据库(而不是代码)级别执行此操作。

我们想知道 grails 是否有任何方法可以帮助我们解决这个问题。例如。

  1. 创建一个新的 grails 审计项目,复制(剪切和粘贴)域类,添加额外的列。这至少会自动生成模式。然后我们需要手写触发器,并将它们放在正常项目的 BootStrap 中。
  2. 使用 grails 脚本从主模式中读取表和列元数据,并创建必要的 sql 语句以生成审计模式,并在正常模式表上生成触发器。
  3. 根本不要使用 grails,编写整个脚本以在 grails 之外创建审计表和触发器。不幸的是,我们没有可用的 DBA 或 SQL 脚本专家。
  4. 使用某人已经编写的插件来执行此操作(找不到任何插件)。
  5. 别的东西?

有任何想法吗?其他人做过这样的事情吗?

4

0 回答 0