Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grails+MySQL创建审计表的策略_Mysql_Grails_Audit Tables - Fatal编程技术网

Grails+MySQL创建审计表的策略

Grails+MySQL创建审计表的策略,mysql,grails,audit-tables,Mysql,Grails,Audit Tables,我们的grails应用程序创建用于存储域对象的普通表 出于欺诈和监管目的,必须对关键表格进行审计,即每项变更都应记录在案,并注明是谁做的,以及何时做的 在以前的项目中,我们创建了一个新的审核模式,并将普通表的副本放入其中,如果每个表与普通表相同,除了: 4个附加列:userId、IP、DataChanged、Action Update、Delete、Insert ID不再是唯一的 没有约束,没有主键,没有索引。 在一个名为audit的模式中。 在他前面。在项目中,Oracle DB编写了一个复杂

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

出于欺诈和监管目的,必须对关键表格进行审计,即每项变更都应记录在案,并注明是谁做的,以及何时做的

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

4个附加列:userId、IP、DataChanged、Action Update、Delete、Insert ID不再是唯一的 没有约束,没有主键,没有索引。 在一个名为audit的模式中。 在他前面。在项目中,Oracle DB编写了一个复杂的脚本,从普通模式中读取表和列,并在审核模式中创建相应的表/列,然后在普通DBs表上创建insert/update/delete触发器

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

为了安全起见,我们需要在DB而不是代码级别执行此操作

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

创建一个新的grails审计项目,复制、剪切和粘贴域类,添加额外的列。这将至少自动生成模式。然后我们需要手工编写触发器,并将它们放入正常项目的引导程序中。 使用grails脚本从主模式读取表和列元数据,创建必要的sql语句以生成审计模式,并在普通模式表上生成触发器。 根本不用grails,编写整个脚本,在grails之外创建审计表和触发器。不幸的是,我们没有DBA或SQL脚本编写专家。 使用一个已经有人编写的插件来完成这个任务,但找不到任何插件。 还有别的吗?
有什么想法吗?还有人做过这样的事吗?

那么,不是吗?如果我是你,那将是我的第一眼。否则就不要使用Grails,直接从DB管理一切old@JoshuaMoore-说得好。我试了第一个。将其添加到BuildConfig.groovy中,并在域类中设置static auditable=true对模式没有任何影响-它不会创建任何审核表,因此我猜它只是记录对文本文件的更改,这不是我们需要的。我们可以使用它的onChange钩子,但这不像触发器那样安全,因为grails可能不是唯一改变DB的东西。我不知道为什么审计日志插件不工作,看起来你的插件配置没问题。无论如何,如果grails不是唯一可以改变db的东西,我认为实现您想要的最好方法是使用triggersI使用审计日志插件。在这方面我做得很好。