资金的收支累计。应该怎么设计
比如有一个表格,要显示资金的收支清单。每一行都要显示收入、支出、资产总额的累计值。
那这个收入支出表应该怎么设计合理呢?
如果在收支表中曾加这3个字段,也就是每插入一条数据,在新的一行数据中都更新这3个字段值,这样虽然查起来很方便,但插入数据时是个问题,比如一次事务可能要插入多条数据。另外,只要有一次计算出错,那以后的插进来的所有数据就都是错的。
请大家不吝赐教
------最佳解决方案--------------------第一个事务修改提交前,第二个事务一直处于等待状态 直到第一事务提交
------其他解决方案--------------------帮顶
------其他解决方案--------------------这字段存储维护起来很麻烦 ,出报表时 动态计算比较合适。
------其他解决方案--------------------
如果是在一个带分页的页面里显示,动态计算方便吗,另外数据量之后速度会不会很慢呢
------其他解决方案--------------------另外系统运行时间长了之后 ,从第一笔推到现在,跨越的计算很大吧
------其他解决方案--------------------
肯定会影响查询速度,你需要找一个平衡点,如果统计复杂,可以适当增加冗余字段保存计算值,或者用计算列。
------其他解决方案--------------------计算慢 可以想办法使速度 尽量快 。但是如果保存起来 就等于给自己挖了个坑。
------其他解决方案--------------------
我也觉得。。。
求推荐方法
------其他解决方案--------------------之前公司的资金出入表也是这么设计的,在插入每一条数据时就计算一次出入账以及总计,这样以后查询也很方便。
------其他解决方案--------------------写个函数 查询时 调用函数返回需要的三列数据,如果速度还是不行 可以每天晚上更新出计算的三列数据到辅助表 这样速度就上去了。总之方法多多
------其他解决方案--------------------
如果这么设计,当多个人对同一个帐户进行操作的时候。怎么才能保持正确呢,
比如当前最后一条数据总计是100,此时两个人取出了这条数据,然后都执行了扣5块钱操作。如果不作任何处理,保存进去的是两条总计95的数据,而不是一条95,一条90
------其他解决方案--------------------人工顶顶的的
------其他解决方案--------------------
真要这么操作 必须要更改sqlserver的默认隔离级别 改为可重复读 这样只能按顺序更新 不会出现上述问题。
但是这样并发性 就不会特别高 要看实际应用的需求 来取舍
------其他解决方案--------------------
可重复读
是不是当我开始第一个事务读到100后,第二个事务在读取数据时就被卡住了,知道第一个事务完成才能继续?