我有两个表,stok和stok_detail.Table股票是表stock_detail的总结。
股票由三栏组成: item_id、数量和成本。
库存细节由5栏组成: transaction_id、posting_date、item_id、qty和成本。
当某人编辑某些事务时,可能会重新计算成本。
例如,在第10天购买编辑事务。在第10天以后的所有费用将被重新计算。
我把所有的计算都放在了存储过程中。
问题是,这个事务可能需要几个小时,如果有许多事务是recalculated.and,那么在某些情况下,当事务运行时,电源会下降,有时会导致stock_detail表损坏。
我的问题是:
最好先把计算放在临时表上。例如stock_calc。当所有计算完成后,表stock_detail将被更新,从stock_calc获取值。因此,在完成所有计算之后,表stock_detail将被更新。
因此,如果出了什么问题,我只需空表stock_calc。我知道,当事务更新stock_detail时,电源可能会下降。但是概率将是minimized.This,当然计算时间会更长。但如果更安全,我可能会考虑这样做。
你们觉得怎么样?如有任何意见和想法,将不胜感激。
还有一件事。如果电源关闭,是否有可能在重新连接到数据库时看到所有未提交的事务并提交/回滚?
发布于 2012-12-17 19:40:22
Firebird的构建考虑到了酸的编译。这意味着“理论上”,即使在网络或电源(硬件除外)故障,您的数据库应该保持它的完整性。
然而,也存在数据损坏的情况,特别是在硬件故障或Firebird引擎编程错误方面。您应该升级您的FB版本到最新的稳定您的主要版本。
此外,保持事务活动数小时以更改大量数据并不是一个好的架构设计,请避免这样做。
https://stackoverflow.com/questions/13468816
复制相似问题