要同步两个表的数据,为这两个表创建了触发器,为了防止陷入死循环,在进行插入操作后,diable另一个表的触发器.  但是程序一直都通不过,还请各位高手帮忙解决,  谢谢啦!^_^ 第一触发器create or replace trigger trigger_b  after insert on test_b  referencing new as new_value old as old_value  for each rowbegin  alter  table  test_a  trigger trigger_a  disable;    -- 执行到此处程序通不过,但好像语法是没什么错误的。  insert into test_a    (u_id,uname)  values    (:new_value.whoid, :new_value.whenid);   alter  table  test_a  enable  trigger trigger_a;end; 第二个触发器 create or replace trigger trigger_a  after insert on test_a  referencing new as new_value old as old_value  for each rowbegin  alter trigger trigger_b disable;     -- 同上!  insert into test_b    (whoid, whenid)  values    (:new_value.u_id, :new_value.uname);  -- alter  table  test_b  enable  trigger trigger_b ;  alter trigger trigger_b enable;end;

解决方案 »

  1.   

    用execute immediate 'alter     table     test_a     trigger   trigger_a     disable';看行不行
      

  2.   

    要同步两个表的数据
    ---------------
    这个思路本身就有问题,貌似一个trigger中不能对另外的trigger进行操作.同步两个表的数据, 是不是说这两个表完全一样?也就是说一个表是另外一个表的备份?
      

  3.   

    用execute   immediate   'alter           table           test_a           trigger       trigger_a           disable‘能成功创建触发器,但是在执行插入语句的时候在此处又会报错,还请高手在帮忙看看,哈哈,谢谢了另这两个表不是完全一样,也不是表的备份,是两个系统里面的两个表,比如在A系统中新建用户,B系统数据库中也插入新建的用户数据。在B系统中新建用户,A系统的数据库中也插入新建的用户。可否明白?嘿嘿,先谢谢你们了,继续帮帮忙了。
      

  4.   

    这个问题比较实际,刚才试验了下,没找到方法。我的solution:为2个表分别添加字段,用以解决循环问题 --原来的表
    create table t_a(u_id number, uname varchar2(100));
    create table t_b(whoid number, whenid varchar2(100));--加字段
    alter table t_a add insert_to_b number(1) default 1;
    alter table t_b add insert_to_a number(1) default 1;--触发器
    create or replace trigger tr_tb_trigger
    after insert on t_b
     for each row
    when (new.insert_to_a = 1)
    begin
      insert into t_a(u_id, uname, insert_to_b) 
    values (:new.whoid, :new.whenid, 0);
    end tr_tb_trigger;/create or replace trigger tr_ta_trigger
    after insert on t_a
     for each row
    when (new.insert_to_b = 1)
    begin
      insert into t_b(whoid, whenid, insert_to_a) 
    values (:new.u_id, :new.uname, 0);
    end tr_tb_trigger;
    /
      

  5.   

    codearts的想法非常的好,但是好像只对insert方法起作用。如果用UPDATE不太适用,嘿嘿,先谢谢了。期待解决update操作的方法