create or replace TRIGGER REFRESH_REST_VIEW
AFTER
INSERT OR UPDATE
ON tbl_contract
BEGIN
execute DBMS_MVIEW.REFRESH('REST_VIEW');
END REFRESH_REST_VIEW;
commit;
这是我用来刷新物化视图的 sql 触发器。但它说..
Warning: execution completed with warning
TRIGGER REFRESH_REST_VIEW Compiled.
PS:当表的数据(由物化视图使用)进行任何DML操作时,将执行触发器。
我已经用谷歌搜索了足够多的帖子,很多帖子说这是可能的,但我不知道该怎么做。我尝试使用常规触发器语法,但它不起作用。
更新:
现在我正在尝试对过程和触发器进行相同的操作..
create or replace
PROCEDURE Rfresh_mate_views AS
BEGIN
DBMS_MVIEW.REFRESH('REST_VIEW');
END Rfresh_mate_views;
create or replace trigger refresh_company_mview
after insert or update ON BCD.BCD_COMPANY
begin
RFRESH_MATE_VIEWS();
end refresh_company_mview;
全部已成功编译,但在表中更新时显示:
ORA-04092: cannot COMMIT in a trigger
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2449
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2429
ORA-06512: at "BCD.RFRESH_MATE_VIEWS", line 3
ORA-06512: at "BCD.REFRESH_COMPANY_MVIEW", line 2
ORA-04088: error during execution of trigger 'BCD.REFRESH_COMPANY_MVIEW'