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.
P.S. :觸發器將在表格的數據(由Materialized View使用)執行任何DML操作時執行。
我已經使用了足夠多,許多職位說這是可能的,但我沒有得到如何做到這一點。我嘗試使用常規的觸發器語法,但它不起作用。
Updated:
我現在想用過程和觸發器一樣..
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'
爲什麼你會想這樣做的觸發?爲什麼不將聲明視圖聲明爲'REFRESH FAST ON COMMIT'並讓Oracle在事務提交時自動刷新物化視圖? –
謝謝洞穴,我試過了,它說.. SQL錯誤:ORA-12054:無法設置物化視圖的ON COMMIT刷新屬性 12054. 00000 - 「無法爲物化視圖設置ON COMMIT刷新屬性」 *原因:物化視圖不符合提交時刷新的條件。 *操作:僅指定有效的選項。 – manurajhada