在A用户中有表a,B用户中有表b,a和b的结构相同,现在希望在表a做insert的时候,通过触发器实现往表b中同步写入数据。
触发器如下create or replace trigger buid_psn_copy  
    after insert   
    on bd_psnbasdoc   
    referencing old as old_value   
                new as new_value   
    for each row   
begin  
      insert into ynyj.bd_psnbasdoc(psnname,pk_psnbasdoc)    
      values(:new_value.psnname,
             :new_value.pk_psnbasdoc
            );
end;
用户A:hr55,表a :bd_psnbasdoc
用户B:ynyj,表b :bd_psnbasdoc
编译的时候报错:行号= 2 列号= 7 错误文本= PL/SQL: SQL Statement ignored
                行号= 2 列号= 24 错误文本= PL/SQL: ORA-00942: 表或视图不存在请问要如何写可。

解决方案 »

  1.   

    A用户没有操作B用户表的权限
    用b用户登录
    grant insert on tableb to usera;
      

  2.   

    1、SQL环境有权限操作另一用户的表,不代表你存储过程环境有权限操作相关表,
          所以可能需要显示授权(如1楼)
    2、如果b表仅仅是为了同步数据,建议使用物化视图方式同步。
      

  3.   

    用物化视图吧,materialized view
      

  4.   

    grant insert on tableb to usera;
      

  5.   

    grant all on ynyj.bd_psnbasdoc to usera