首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何避免长事务中的表损坏

如何避免长事务中的表损坏
EN

Stack Overflow用户
提问于 2012-11-20 07:58:41
回答 1查看 119关注 0票数 0

我有两个表,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,当然计算时间会更长。但如果更安全,我可能会考虑这样做。

你们觉得怎么样?如有任何意见和想法,将不胜感激。

还有一件事。如果电源关闭,是否有可能在重新连接到数据库时看到所有未提交的事务并提交/回滚?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-17 19:40:22

Firebird的构建考虑到了的编译。这意味着“理论上”,即使在网络或电源(硬件除外)故障,您的数据库应该保持它的完整性。

然而,也存在数据损坏的情况,特别是在硬件故障或Firebird引擎编程错误方面。您应该升级您的FB版本到最新的稳定您的主要版本。

此外,保持事务活动数小时以更改大量数据并不是一个好的架构设计,请避免这样做。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13468816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档