如今我再在B用户下的表aaa插入数据(当然这数据是从别的外地库转入的)时,必须在A用户下的表aaa插入同样的数据,如果我也同理用触发器实现功能,这样就会使两边的触发器实现无限循环,即死循环了,这又该怎么做呢

解决方案 »

  1.   

    实现同步怎么这样设计触发器,死循环走不了
    是否可以这样,创建一个中间表,分别对两个用户的表设计触发器:
    create trigger a.aaa_tri_a
    before insert on a.aaa
    for each row
    begin
    insert into temp(:new.col_name,....,user);--最后是标记是一个用户
    end;
    /
    create trigger b.aaa_tri_b
    before insert on b.aaa
    for each row
    begin
    insert into temp(:new.col_name,....,user);--最后是标记是一个用户
    end;
    /
    哪temp表可以根据用户标记选出数据,当然性能上不可取,但可以对它分工
    create table temp
    (....)
    partition by RANGE(user_lage)
    (PARTITION p1 VALUES LESS THAN('a'),
     PARTITION p1 VALUES LESS THAN('b'));
      

  2.   

    如果不是实时一致的话写一个存储过程,比较两个表的数据是否一致,并进行插入是两个表一致
    通过job来定时调用