我有两个表 stok 和 stok_detail。表 stock 是表 stock_detail 的摘要。
stok 由 3 列组成:item_id、qty 和 cost
库存明细由 5 列组成:transaction_id、posting_date、item_id、数量和成本。
当有人编辑某些交易时,可能会重新计算成本。
例如,在日期 10 购买编辑交易。日期 10 之后的所有后续交易的成本将被重新计算。
我已经把所有的计算都放在了存储过程中。
问题是,如果有很多事务要重新计算,这个事务可能需要几个小时。并且在某些情况下,当事务运行时,电源会掉下来,有时会导致 stock_detail 表损坏。
我的问题是:
首先将计算放在临时表上会更好吗?例如stock_calc。当所有计算完成后,表 stock_detail 将被更新,从 stock_calc 中获取值。所以表 stock_detail 会在所有计算完成后更新。
因此,如果出现问题,我只需清空表 stock_calc。我知道当交易更新 stock_detail 时电源可能会下降。但概率将被最小化。这当然会花费更长的计算时间。但如果它更安全,我可能会考虑这种方法。
你们有什么感想?任何意见和想法将不胜感激。
还有1件事。如果断电,当我重新连接到数据库时,是否可以看到所有未提交和提交/回滚的事务?