长期用户,第一次“提问”。
我试图构建一个 Oracle 过程和/或触发器,它将两个表与 MINUS 操作进行比较,然后将任何结果行插入另一个表。我了解如何在标准 SQL 中进行查询,但我无法想出使用 PL/SQL 执行此操作的有效方法。
诚然,我对 Oracle 很陌生,而且对 SQL 非常熟悉。这可能是实现我的目标的一种愚蠢的方式,所以请允许我解释一下我正在尝试做什么。
我需要创建某种警报,当V_$PARAMETER视图更改时将触发该警报。显然触发器不能响应视图的更改,而是只能替换视图上的操作......我不希望这样做。所以,我所做的是创建一个表来镜像该视图,以将其保存为“快照”。
create table mirror_v_$parameter as select * from v_$parameter;
然后,我尝试创建一个减去这两个的过程,这样,每当对v_$parameter进行更改时,它将返回快照mirror_v_$parameter之间的差异。我尝试使用以下命令创建游标:
select * from v_$parameter minus select * from mirror_v_$parameter;
在过程中使用,以便它可以用于获取任何返回的行并将它们插入另一个名为alerts_v_$parameter的表中。目的是,当向“警报”表添加某些内容时,可以使用触发器以某种方式(还没有到这一步)通知我的团队v_$parameter表发生了变化,并且他们可以参考alerts_v_$parameter来查看发生了什么变化。我会使用某种脚本定期运行此过程。也许,有一天,当我更好地理解这一切时,操纵进入alerts_v_$parameter的内容表,以便它提供更好的信息,例如具体更改了哪些列,其先前的值是什么等。
有什么建议或指示吗?
感谢您抽出时间来阅读。任何想法将不胜感激。