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

解决方案 »

  1.   

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

  2.   

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

  3.   

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

  4.   

    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 ;
      

  5.   

    即使不用触发器,一句sql也能更新了。
    在更新num1 的时候,连带着把num14也更新了即可。