有8张表:T1,T2.....T8,均有name这个字段,类型是varchar2(20),
现在有第9张表(T9)也有name这个字段。现在有这样一个需求:
   根据T9中的name值去更新其他8张表:T1,T2.....T8.
   条件是T9.name在其他8表中有同样值的时候。
 
   打个比分:
       T9.name = '张三'。
       如果T1.name有等于'张三'的记录时,就更新T1.type = T9.type.
       如果T2.name也有等于'张三'的记录时,就更新T2.type = T9.type.
       如果T3.name也有等于'张三'的记录时,就更新T3.type = T9.type.
       。
       总之8表中存在与T9中相同的name就更新,不存在就不管它。     T9:小表  636条记录。T1,T2.....T8大表。    大家有好的解决方案吗?不妨指点下,谢谢!
   

解决方案 »

  1.   

    貌似 merge into 只能关联二张表似的
      

  2.   


    --本人想也就只有这样,建个触发器啦,望其他高手有什么好的办法
     create or replace trigger up_tb before insert or update on tb9 for each row
    declare
    pragma autonomous_transaction;
     begin
     update tb1  set type=:new.type where name=:new.name;
     update tb2  set type=:new.type where name=:new.name;
     update tb3  set type=:new.type where name=:new.name;
     update tb4  set type=:new.type where name=:new.name;
     update tb5  set type=:new.type where name=:new.name;
     update tb6  set type=:new.type where name=:new.name;
     update tb7  set type=:new.type where name=:new.name;
     update tb8  set type=:new.type where name=:new.name;
     commit;
     end;
      

  3.   

    自个写一个存储过程,在里面不断的update