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

时间:2014-11-28 13:36:55

标签: oracle triggers

我们的DBMS(Oracle)存在问题,导致我们无法使用物化视图,因此我的老板提出了使用真实表和触发器实现它的想法;在实例化视图所基于的其中一个表中完成插入,更新或删除时,插入,更新或删除此表。

我知道我会因为同意这一点而下地狱,但悲伤的时间已经过了。

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

create trigger my_trigger
after insert or update or delete on table1, table2

此外,是否有办法只创建一个触发器而不是一个用于插入,一个用于更新,一个用于删除?

1 个答案:

答案 0 :(得分:0)

试试这个,

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;

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