为什么需要回滚?

时间:2011-01-18 10:20:47

标签: database rollback

为什么回滚如此重要?

是否阻止数据(如SQL DB中的数据)处于不一致状态?

如果是这样,数据“存储”(SQL DB或其他什么)如何才能使它成为一个腐败状态?

是否存在不需要“回滚”的数据存储机制?

2 个答案:

答案 0 :(得分:4)

如果在数据库运行期间出现任何类型的错误,则回滚非常重要。在数据库服务器崩溃的情况下,它们可以真正节省一天,或者在修改DB内容的应用程序中抛出关键异常。当执行重要的数据库操作(即更新,插入等)并且中间的过程被中断时,很难跟踪哪些操作是成功的,之后使用DB会非常复杂。

“商店”本身通常没有内置的一致性控制机制 - 这正是我们使用回滚和交易的原因。这可以被视为一种“实时备份”机制。

答案 1 :(得分:3)

有些情况下,当您需要在许多相关表中插入/更新数据时 - 如果您没有事务逻辑,那么进程中间某处的任何错误都可能导致数据不一致。

简单的例子。假设您需要将订单表头数据插入订单表并将订单行插入行表。您插入订单标题,读取标识,开始插入订单行 - 但是第二次插入无论出于何种原因都会失败。只有从这种情况中恢复的可靠方法是回滚第一个插入 - 显式(当你的数据库连接处于活动状态时)或隐式(当链接断开时)。