+ -
当前位置:首页 → 问答吧 → 存储过程怎么写

存储过程怎么写

时间:2011-09-14

来源:互联网

tab 有 id num1 num2 num3 num4 ……这几列 其中tab 有1W多条数据
  当 修改 tab 中num1=10以后 即 update tab set num1=10 系统需要在重新计算
  select* from where id=……的num4的值 (num4=num1+num2+……) 存储过程怎么写

作者: xyong1325   发布时间: 2011-09-14

num4 = num1 + num2 + num3 ,这个字段压根就不应该设计出来,完全是冗余的,维护还麻烦
num1, num2, num3 修改了,全部都要更新这个字段

作者: opps_zhou   发布时间: 2011-09-14

这个是我举的例一个列子

作者: xyong1325   发布时间: 2011-09-14

这个我觉得没有必要写一个程序过程啊。。你直接写个触发器不就可以了吗???

作者: ulihss   发布时间: 2011-09-14

楼主什么意思,我怎么没看懂呢

作者: ghsau   发布时间: 2011-09-14

写个触发器吧,如果是临时做的更新,可以写语句只更新一次num4即可

作者: luochaofeng520   发布时间: 2011-09-14

1. 触发器实现,上述已经说明了做法
2. 存储过程,加标识,再分步实现。
  1) update ,同时,加标识(如,更新时间,或更新标识位)
  2) 根据 标识,再次进行计算 update 其它字段

作者: coolkisses   发布时间: 2011-09-14

SQL code
CREATE OR REPLACE TRIGGER TRI_REFUSE_NUM4 
  BEFORE UPDATE OF NUM1,NUM2,NUM3 ON TAB 
  FOR EACH ROW
BEGIN
  :NEW.NUM4 := :NEW.NUM1+:NEW.NUM2+:NEW.NUM3 ;
END TRI_REFUSE_NUM4 ;

作者: renfengjun   发布时间: 2011-09-14