问题描述
问题是这样的;oracle数据库有一个分数表 fenshu(fs1,fs2,fs3)有一个权值表 quanzhi(qz1,qz2)实现触发器:往分数表里面插入或更新fs1,fs2,要能自动更新fs3数据。fs3=fs1*qz1+fs2*qz2请问这个触发器该怎么实现?
解决方案
权值表只有一条记录么?是的话试下下面的sql:create or replace trigger trig_updateFenshu after insert on fenshu for each row begin declare qz1 varchar(20); declare qz2 varchar(20); select * into qz1,qz2 from quanzhi;/*如果权值有多条,分页取对应的那条*/ update fenshu set fs3=new.fs1*qz1+new.fs2*qz2 where fs1=new.fs1 and fs2=new.fs2; end
解决方案二:
由于手边没有oracle所以使用mysql写了一个.应该是大同小异的.如下:只是插入的触发器.更新的把insert换成update把触发器名称修改一下即可.CREATE TRIGGER t_beforeupdate_on_insertBEFORE INSERT ON fenshuFOR EACH ROWBEGIN SET new.fs3= new.fs1*(select qz1 FROM quanzhi)+new.fs2*(select qz2 FROM quanzhi);END;注:mysql中使用after时不可使用new!不知道oracle是否也同理.手边没有oracle所以无法验证.