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'