我们的grails应用程序会创建用于存储域对象的普通表。
出于欺诈和监管目的,必须对关键表进行审核,即每次更改都应记录在案,以及何时更改。
在之前的项目中,我们创建了一个新的审计模式,并将正常表的副本放入其中,每个表都与普通表相同,但是:
- 4个附加列:userId,IP,DataChanged,Action(更新,删除,插入)
- ID不再是唯一的
- 没有约束,没有PK,没有索引。
- 在名为audit的模式中。
醇>
在他上面。在项目中,Oracle DB编写了一个复杂的脚本来读取普通模式中的表和列,并在审计模式中创建相应的表/列,然后在普通的DB表上创建插入/更新/删除触发器。
我们需要为MySQL做类似的事情。
为了安全起见,我们需要在DB(非代码)级别执行此操作。
我们想知道Grails是否可以帮助我们解决这个问题。例如
- 创建一个新的grails审计项目,复制(剪切和粘贴)域类,添加额外的列。这将至少自动生成模式。然后我们需要手工编写触发器,并将它们放在正常项目的BootStrap中。
- 使用grails脚本从主模式中读取表和列元数据,并创建必要的sql语句以生成审计模式,并在普通模式表上生成触发器。
- 根本不要使用grails,编写整个脚本来创建审计表和grails之外的触发器。不幸的是,我们没有DBA或SQL脚本大师。
- 使用已经写过的插件来执行此操作(无法找到任何内容)。
- 别的什么?
醇>
有什么想法吗?其他人做过这样的事情吗?