如何检查Oracle中许多表的更新?

Abe*_*los 5 oracle triggers view

我有一个触发器来检查表中的单个列,当该列中有更新(AFTER UPDATE)时,我的触发器被调用,然后我从触发器中调用存储过程,以便执行一些编码的业务逻辑Java的.

到现在为止还挺好.现在情况变得越来越复杂,有一个新的要求意味着如果其他4个表中的列发生变化,也应该执行相同的逻辑(触发器执行的逻辑).我认为在5个不同的表中使用相同的触发器来监听不同的列是不切实际的,我不确定是否应该考虑为这些列创建"视图"并在该视图中放置一个触发器(成本是多少)在性能和/或资源方面付费?)

在您之前使用Oracle的过程中,您对此方案的方法或解决方案是什么?

Sve*_*lov 5

您可以为多个表使用一个触发器的唯一方法是创建视图.

如果我不想创建视图,我会创建一个脚本(或者其他任何东西,使用你想要的语言)和一个表格列表,在这些表格上创建这个触发器(使触发器的创建动态化)..我看到了您的观点是在这种情况下具有最佳可维护性,我认为创建视图比为每个表动态创建触发器更简洁(并且易于维护).


bkm*_*bkm 2

  1. 您实际上可以创建一个连接所有相关表的视图吗?他们彼此有外键吗?
  2. 假设您可以创建一个视图,所有表都可以使用复杂视图进行更新吗?对此有严格的限制。
  3. 通常,我们只在视图上创建 INSTEAD OF 触发器。基于 UPDATE 操作的触发器也有限制。有关所涉及问题的完整列表,请参阅

http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_7004.htm#SQLRF01405

注意:我假设 ORACLE 是数据库,因为您已用 ORACLE 标记了您的问题