要同步两个表的数据,为这两个表创建了触发器,为了防止陷入死循环,在进行插入操作后,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;
---------------
这个思路本身就有问题,貌似一个trigger中不能对另外的trigger进行操作.同步两个表的数据, 是不是说这两个表完全一样?也就是说一个表是另外一个表的备份?
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;
/