问题是这样的;oracle数据库
有一个分数表 fenshu(fs1,fs2,fs3)
有一个权值表 quanzhi(qz1,qz2)
实现触发器:往分数表里面插入或更新fs1,fs2,要能自动更新fs3数据。fs3=fs1*qz1+fs2*qz2
请问这个触发器该怎么实现?
权值表只有一条记录么?是的话试下下面的sql:
[code="java"]
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
[/code]
由于手边没有oracle所以使用mysql写了一个.应该是大同小异的.
如下:只是插入的触发器.更新的把insert换成update把触发器名称修改一下即可.
CREATE TRIGGER t_beforeupdate_on_insert
BEFORE INSERT ON fenshu
FOR EACH ROW
BEGIN
SET new.fs3= new.fs1*(select qz1 FROM quanzhi)+new.fs2*(select qz2 FROM quanzhi);
END;
注:mysql中使用after时不可使用new!不知道oracle是否也同理.手边没有oracle所以无法验证.