create or replace trigger a_to_b after insert on tb for each row
begin
  insert into b.tb(col1,col2,...,coln) values(:new.col1,:new.col2,...,:new.coln);
end a_to_b;当然要求A用户能操作B用户的表才行。

解决方案 »

  1.   

    谢谢没钱的日子的答复,我有一点不明白,就是“当然要求A用户能操作B用户的表才行。”我在建立用户的时候只能是一个用户对应一个表空间,这样我就只能是A用户对应A的表空间,B用户对应B的表空间,那样怎么才能会用A用户操作B用户的表那?怎么才能解决?
      

  2.   

    只要A用户有操作B用户表的权限就行了
    conn userB/pwd
    grant select,insert on tb to userA;
      

  3.   

    我按照你说的方法建立了,但是出现以下的错误:
    MGR-00072: Warning: TRIGGER TEST1_TO_TEST2 created with compilation errors.
    我建立了两个用户:test1,test2对应表空间test1,test2,以下是表空间中表的结构:
          create table TEST_1 (
          NO number(2),
          JH VARCHAR2(20));
    下面是我写的触发器代码:
    create or replace trigger test1_to_test2 after insert on test_1 for each row
    begin
      insert into test2.test_1(NO,JH) values(:new.NO,:new.JH);
    end test1_to_test2;
    但是出现了以上的错误,请您看看什么原因,谢谢。
      

  4.   

    好了,我建立成功了,但是插入数据的时候出现下面的问题:insert into test_1(no,jh) values('1','11');
    ORA-04091: table TEST2.TEST_1 is mutating, trigger/function may not see it
    ORA-06512: at "TEST2.TEST1_TO_TEST2", line 2
    ORA-04088: error during execution of trigger 'TEST2.TEST1_TO_TEST2'
    这是为什么?
      

  5.   

    connect sys/password as sysdbagrant execute any trigger to test1;
      

  6.   

    就你的提示信息来好象是触发器建错用户了。在test2中给test1分配权限
    在test1中建触发器,并在test1中插入数据。此时触发器将自动在test2的表中添加相应数据
      

  7.   

    把你在SQLPLUS中操作的全过程贴上看看,从建表开始。另建议在两个用户下建的表名最好不同,具有象征性,只要表结构完全相同即可。
      

  8.   

    下面是我操作的全过程
    1、在test1、test2用户下建表:
         create table TEST_1 (
          NO number(2),
          JH VARCHAR2(20));
    2、在test2中给test1授权:
       connect test1/test1@slcygc
       grant select,insert on test_1 to test2;
    3、在test1中建立触发器
       create or replace trigger test1_to_test2 after insert on test_1 for each row
       begin
       insert into test2.test_1(NO,JH) values(:new.NO,:new.JH);
       end test1_to_test2;
    4、在test1中插入数据
       insert into test_1 (no,jh) values('1','1111')
    前面的所有步骤都是成功的,只是在插入数据后,出现下面的错误:
    ORA-04091: table TEST2.TEST_1 is mutating, trigger/function may not see it
    ORA-06512: at "TEST2.TEST1_TO_TEST2", line 2
    ORA-04088: error during execution of trigger 'TEST2.TEST1_TO_TEST2'
    ORA-06512: at "TEST1.TEST1_TO_TEST2", line 2
    ORA-04088: error during execution of trigger 'TEST1.TEST1_TO_TEST2'
    诸位大侠看看到底是什么原因,谢谢,万分感激!!
      

  9.   

    connect test1/test1@slcygc
       grant select,insert on test_1 to test2;
    ------------------------------------------
    改成
    conn test2/password@slcygc
    grant select,insert on test_1 to test1;
    其它的不变,再试试
      

  10.   

    我按照你的指导改了一下,还是插入数据的时候这个问题:
    ORA-04091: table TEST2.TEST_1 is mutating, trigger/function may not see it
    ORA-06512: at "TEST2.TEST1_TO_TEST2", line 2
    ORA-04088: error during execution of trigger 'TEST2.TEST1_TO_TEST2'
    ORA-06512: at "TEST1.TEST1_TO_TEST2", line 2
    ORA-04088: error during execution of trigger 'TEST1.TEST1_TO_TEST2'是不是前面的操作不能在客户端上进行,而是必须在数据库服务器上进行?
      

  11.   

    好象你的test2用户下也有一个触发器,把它drop掉