可以。
我有这样一个需求:首先从外部oracle数据库使用远程连接生成本地物化视图,当本地物化视图改变时(就是这里可以用触发器实现),读取该视图数据并写入另外的表。测试了一下,是可以在物化视图上建立触发器的。具体步骤是这样的:
1,在外部数据库,create materialized view log on t1;
2, 本地配置到远程的数据库连接:create database link DBLINK connect to helios identified by helios using 'tns_name'; --tns_name是网络服务名,你自己要配置通到远程数据库的网络服务,可以c>tnsping tns_name;
3, 在本地建立物化视图:
   CREATE MATERIALIZED VIEW MV$WIN_LOTTERY
    REFRESH FORCE ON DEMAND
    START WITH TO_DATE('23-10-2008 17:22:02', 'DD-MM-YYYY HH24:MI:SS') NEXT SYSDATE+1/24/60   
    AS
    SELECT * FROM t1@DBLINK "WIN_LOTTERY";
4,建立物化视图上的触发器:
  create or replace trigger TR_AUID_MV$WIN_LOTTERY
  after insert or update or delete on mv$win_lottery  
  
  declare
  -- local variables here
  begin
  CASE
  WHEN INSERTING THEN
    INSERT INTO T_SYNC_LOG(LOG_ID,LOG_TIME,Message)
    VALUES(Q_SYNC_LOG.NEXTVAL,SYSDATE,'OK');
  WHEN DELETING THEN
       NULL;
  WHEN UPDATING THEN
       NULL;
  END CASE;
  end TR_AUID_MV$WIN_LOTTERY;
完成。--仅仅是个测试。有兴趣者可以看看一次插入/删除/修改分别会触发几次该触发器