create trigger a_tri
before insert or update or delete on a
for each row
declare
num number;
begin
if inserting then
 insert into b values(:new.a,:new.b,:new.c,:new.d);
elsif updating then
 delete from b where a=:new.a and b=:new.b and c=:new.c and d=:new.d;
 insert into b values(:new.a,:new.b,:new.c,:new.d);
else
 delete from b where a=:old.a and b=:old.b and c=:old.c and d=:old.d;
end if;
end;
/

解决方案 »

  1.   

    to beckhambobo:
    现在我 不能简单的 就根据更新的记录来删除B表中相应的记录和插入相应的记录,如
    A表中记录 1、  S      11      SSS
              2、  S      11      DDD
    在B表中有记录S作为第一层,11作为第二层,SSS和DDD作为第三层,有字段记录层数。
    那我现在要更新表A第二条记录,把11改为22,这样我不能把原先的11从B表中删除,因为11还是B表中的第二层。
    所以我还要确定有没有其他记录也为11,这样我就可能面临变异表的问题,我不知如何解决
    请问有什么建议和解决方法吗?谢谢!!