create or replace trigger trg_ai_table1  
after insert on table1     
for each row   
begin   
     insert into table1@linkorcl(col1,col2)
       select :New.col1,:New.col2
         from table1     
end;
/
上面这个触发器是想当服务器的table1中添加新数据的时候,客户端也同步添加相应的数据,但是总数娴熟这个警告
Warning: Trigger created with compilation errors.
不知道如何解决table1是服务器中的表,客户端的表也叫table1。link已经建立,测试过可以用
急求解决方法???????

解决方案 »

  1.   

    insert into table1@linkorcl(col1,col2)
    select :New.col1,:New.col2
    from table1 
    这个语句缺省;号
      

  2.   

    from table1;少分号,其它关注中
      

  3.   

    begin 
    insert into table1@linkorcl(col1,col2) values(:New.col1,:New.col2); 
    end;
      

  4.   

    先谢谢各位!!!!!!
    现在可以创建触发器
    但是插入数据的时候又有新问题了
    SQL> insert into TB_SI_SCHEDULE(HEAT_ID,STEEL_GRADE)
      2  values('F00000003','ML08AL');
    insert into TB_SI_SCHEDULE(HEAT_ID,STEEL_GRADE)
                *
    ERROR at line 1:
    ORA-04091: table SYSTEM.TB_SI_SCHEDULE is mutating, trigger/function may not
    see it
    ORA-02063: preceding line from SG
    ORA-02063: preceding 2 lines from LINKORCL
    ORA-06512: at "SYSTEM.TRG_AI_TB_SI_SCHEDULE", line 2
    ORA-04088: error during execution of trigger 'SYSTEM.TRG_AI_TB_SI_SCHEDULE'刚才google一下错误的原因,有人说 trigger都不支持dml原表
    不知道是不是这个原因
    如果是这个原因,要实现我的功能应该怎么改?
      

  5.   

    create or replace trigger trg_ai_table1 
    after insert on table1 
    for each row 
    begin 
    insert into table1@linkorcl(col1,col2)
    select :New.col1,:New.col2
    from dual;
    end;