Oracle 修改两个不同的表时触发一个触发器

Oracle 修改两个不同的表时触发一个触发器,oracle,triggers,Oracle,Triggers,我们的DBMS(Oracle)存在一个问题,它阻止我们使用物化视图,因此我的老板提出了使用真实表和触发器实现它的想法;在物化视图所基于的其中一个表中执行插入、更新或删除操作时,从此表中插入、更新或删除 我知道我会为同意这一点而下地狱,但哀悼的时间早该到了 我的问题是,我不知道如何在这些表中的任何一个表中进行更改时触发此触发器,而不仅仅是在其中一个表中。像这样的事情似乎不起作用: create trigger my_trigger after insert or update or delete

我们的DBMS(Oracle)存在一个问题,它阻止我们使用物化视图,因此我的老板提出了使用真实表和触发器实现它的想法;在物化视图所基于的其中一个表中执行插入、更新或删除操作时,从此表中插入、更新或删除

我知道我会为同意这一点而下地狱,但哀悼的时间早该到了

我的问题是,我不知道如何在这些表中的任何一个表中进行更改时触发此触发器,而不仅仅是在其中一个表中。像这样的事情似乎不起作用:

create trigger my_trigger
after insert or update or delete on table1, table2
还有,是否有一种方法可以只创建一个触发器,而不是一个用于插入、一个用于更新和一个用于删除

CREATE or REPLACE TRIGGER test
  AFTER INSERT OR UPDATE OR DELETE ON tabletest
  REFERENCING OLD AS OLD NEW AS NEW 
  FOR EACH ROW 

DECLARE
      << Your declarations>>
BEGIN


IF INSERTING THEN 
<<Your insertions>>
END IF;

IF UPDATING THEN 
<<Your updations>>
END IF;    

IF DELETING THEN 
<<Your deletions>>
END IF;


EXCEPTION
    WHEN OTHERS THEN 
    <<exception handling>>;

END;
创建或替换触发器测试
在tabletest上插入、更新或删除后
以旧代新,以新代旧
每行
声明
>
开始
如果插入,则
如果结束;
如果更新,则
如果结束;
如果删除,则
如果结束;
例外情况
当其他人
;
结束;

此外,同一触发器中不能有多个表,如果功能相同,则需要在每个触发器中编写相同的代码并更改表名。

一个触发器始终只适用于一个表。两个表不能有一个触发器。