请教一个自动计算触发器的写法

问题描述

问题是这样的;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所以无法验证.

时间: 2024-12-26 22:59:37

请教一个自动计算触发器的写法的相关文章

sqlserver 存储过程-关于一个数据库触发器的问题

问题描述 关于一个数据库触发器的问题 请教一个数据库相关的问题 各位大神好,小弟现正使用sqlserver数据库,现有这么一个需求, 需要监视有关 表A 的插入,修改,删除 操作,并需要将新的整条数据形成类似 <tbrecord id="某一行的ID" columnAname="该行的列名为columnAname的值" columnBname="该行的列名为columnAname的 值">tbName(表的名称) 一个xml字符串保存

新人请教一个sscanf中的正则表达式的问题

问题描述 新人请教一个sscanf中的正则表达式的问题 比如一串字符我要取其中的数字,df3600sdf365dssdfwef2135fewe@35@#%dsaf54我用""%*[^0-9]%[0-9]""只能取到3600,""%*[^0-9]""也错误..应该怎么取啊 解决方案 正则 直接用 d+ 即可 解决方案二: 这个应该怎么写..求写法

c++-请教一个关于vector函数的问题?

问题描述 请教一个关于vector函数的问题? std::vectorcard; class Information { ...... }; Information *Search() { int i=1; string tempname; cout<<"请输入姓名:"; cin>>tempname; Information * temp; temp=card.begin(); //无法从"std::_Vector_iterator<_Myvec

c++-请教一个EXITPROCESS(0)的问题

问题描述 请教一个EXITPROCESS(0)的问题 请问下它括号里面的0指的是什么意思呀?用1不可以吗?这个函数括号里面都可以写什么呀? 解决方案 函数原型是: VOID ExitProcess( UINT uExitCode ); 函数功能:结束一个进程和它的所有线程. 函数参数:uExitCode [in]指定的进程,并就被终止,此调用的结果所有线程的退出代码.要检索该进程的退出值,使用则GetExitCodeProcess功能. 如果是退出自身写法:ExitProcess(0); 如果想

请教一个c语言问题。谢谢!

问题描述 请教一个c语言问题.谢谢! 原例题: #include <stdio.h> #define maxline 1000 int getline(char line[],int max); void copy(char to[],char from[]); int main() {int len; char line[maxline]; char longest[maxline]; int max = 0; while((len = getline(line,maxline))>0

请教 List 类型的合并写法?

问题描述 //我有以下自定义类型publicclasstheTypeNameMsg{publicstringtheTypeName{set;get;}//姓名publicdoubleKuCun{set;get;}//库存数量publictheTypeNameMsg(stringT_theTypeName,doubleT_KuCun){theTypeName=T_theTypeName;KuCun=T_KuCun;}}List<theTypeNameMsg>t1=newList<theTy

请教一个数据库分组问题

问题描述 请教一个数据库分组问题 我写了这么一个脚本 SELECT da_sp.spdm da_sp.sp da_sp.jldw da_sp.ggxh da_sp.wbdw da_sp.wbbzl da_sp.nbdw da_sp.nbbzl da_sp.cbj da_sp.zhjj da_sp.pddw da_sp.pdxs da_sp.fdyclbj da_sp.zjpsbj xs_jxcrb.spnm sum(xs_jxcrb.cksl) as cksl isnull(c.bqsl0) a

java-小弟想请教一个问题.对于大神们来说很简单

问题描述 小弟想请教一个问题.对于大神们来说很简单 小弟的这个程序很简单 但是对于小弟来说实在是太难了 本来前面的已经实现了,但是算总分的时候第二个人的成绩总是要和第一个成绩相加,这是程序这是运行后的结果就想问问大神怎么做把两个人的总分成绩分开 求大神帮帮忙哈 解决方案 zhongfen[i]=bianliang; 下一行加上 bianliang=0; 解决方案二: 变量 bianliang 在每次输入学生姓名是清零.

请教一个关于java的项目问题

问题描述 请教一个关于java的项目问题 解决方案 类似的http://down.51cto.com/data/2009264http://download.csdn.net/detail/u010777420/5426033 解决方案二: 你自己先试着做呗,你先熟悉Java Web从前台到后端的流程,一块块地实现,自己实现的东西,即使碰到问题,自己解决,收获会很大的. 解决方案三: 这跟我前一段时间写的 差不多, 用 java web, 我博客里有内容分页实现,登录注册,类比的可以写出来这些,