有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大表。 大家有好的解决方案吗?不妨指点下,谢谢!
--本人想也就只有这样,建个触发器啦,望其他高手有什么好的办法
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;