Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/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
Triggers Oracle SQL developer中多个表的单触发器_Triggers_Oracle Sqldeveloper - Fatal编程技术网

Triggers Oracle SQL developer中多个表的单触发器

Triggers Oracle SQL developer中多个表的单触发器,triggers,oracle-sqldeveloper,Triggers,Oracle Sqldeveloper,我几乎在每个论坛上都找过这个话题,但没有找到令人信服的解决方案。我使用的是SQL Developer,这就是我遇到的问题 我有1000多个表,我想在另一个审计表中捕获每个表上的CRUD操作 例如,表A有列(a1、a2、a3),表B有列(b1、b2、b3)。现在,如果在表a中插入和/或更新了一条记录,触发器将在审计表中插入该记录,其中包含表名、列名及其值 (table ,col, value) 审核表将有此记录-(表A,a2,'xyz')。表B的程序相同 我有一个想法,使用元表,它将有所有表的列

我几乎在每个论坛上都找过这个话题,但没有找到令人信服的解决方案。我使用的是SQL Developer,这就是我遇到的问题

我有1000多个表,我想在另一个审计表中捕获每个表上的CRUD操作

例如,表A有列
(a1、a2、a3)
,表B有列
(b1、b2、b3)
。现在,如果在表a中插入和/或更新了一条记录,触发器将在审计表中插入该记录,其中包含表名、列名及其值

(table ,col, value)
审核表将有此记录-
(表A,a2,'xyz')
。表B的程序相同

我有一个想法,使用元表,它将有所有表的列表。然后是元表上的触发器,但这听起来有点愚蠢,而且非常复杂


对不起,这是我的第一篇文章,所以格式不好。请帮忙

你看过吗?我看过。Oracle的内置审计跟踪有助于跟踪数据库用户执行的操作。它无助于捕获更新/插入/删除的值。FGA可以捕获值,但不是您真正想要的方式;你似乎更想了解历史而不是审计。您不能有一个跨多个表的表触发器,而且除非每个表都在更新,否则元表的想法就不起作用,因此它们无论如何都需要自己的触发器,所以您最好直接从表触发器创建历史记录。您可以通过编程的方式为每个表生成触发器创建,这会使任务更简单吗?