现有张净值表value,示意如下:
id  date          value  cvalue   zzz     zzl    fund_id
1   2008-06-01       1      1      0       0        1
2   2008-06-02       1.2    1.2    0.2     0.2      1
3   2008-06-03       1.5    1.5    0.3     0.25     1
4   2008-06-04       1.0    1.0   -0.5    -0.33     1
5   2008-06-01       1      1      0       0        2
6   2008-06-02       1.5    1.5    0.5     0.5      2
7   2008-06-03       2.0    2.0    0.5     0.33     2
8   2008-06-04       1.0    1.0   -0.5    -0.5      2
.       .             .      .      .       .       .
.       .             .      .      .       .       .
.       .             .      .      .       .       .
N       N             N      N      N       N       N
value代表基金的净值,cvalue代表累计净值,zzz代表日增长值,zzfd代表日增长率(未涉及到分红,所以value和value相等)
zzz=value的当前值-value的前一条记录的值
zzl=zzz/前一条value的值
在mysql中如何实现插入value和cvalue的值之后 自动计算并插入当日zzz和zzl的值。看了下mysql的文档,mysql的触发器不能对当前的表进行插入操作,所以请教各位了。
另外问下 有设计过基金网站数据库的朋友嘛 有的话留下联系方式指点一下。

解决方案 »

  1.   

    为什么要用触发器?用SQL语句一样可以完成
      

  2.   

    用一条sql写太麻烦
    还是写个存储过程吧
    先计算出结果再插入
    所有值是一起插入的
      

  3.   

    假设ID是唯一标识的字段的话
    zzz=value的当前值-value的前一条记录的值
    select *,a.value-ifnull(b.value,0) from tt a left join tt b on a.id=b.id-1
    zzl=zzz/前一条value的值 
    select *,(a.value-b.value)/ifnull(b.value,1) from tt a left join tt b on a.id=b.id-1
      

  4.   

    Use before insert trigger.