我们的DBMS(Oracle)存在问题,导致我们无法使用物化视图,因此我的老板提出了使用真实表和触发器实现它的想法;在实例化视图所基于的其中一个表中完成插入,更新或删除时,插入,更新或删除此表。
我知道我会因为同意这一点而下地狱,但悲伤的时间已经过了。
我的问题是,我不知道如何在任何这些表中进行更改时触发此触发器,而不是仅在其中一个表中触发。这样的事似乎不起作用:
create trigger my_trigger
after insert or update or delete on table1, table2
此外,是否有办法只创建一个触发器而不是一个用于插入,一个用于更新,一个用于删除?
答案 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;
另外,在同一个触发器中不能有多个表,如果功能相同,则需要编写相同的代码并更改每个触发器中的表名。