为什么回滚如此重要?
是否阻止数据(如SQL DB中的数据)处于不一致状态?
如果是这样,数据“存储”(SQL DB或其他什么)如何才能使它成为一个腐败状态?
是否存在不需要“回滚”的数据存储机制?
答案 0 :(得分:4)
如果在数据库运行期间出现任何类型的错误,则回滚非常重要。在数据库服务器崩溃的情况下,它们可以真正节省一天,或者在修改DB内容的应用程序中抛出关键异常。当执行重要的数据库操作(即更新,插入等)并且中间的过程被中断时,很难跟踪哪些操作是成功的,之后使用DB会非常复杂。
“商店”本身通常没有内置的一致性控制机制 - 这正是我们使用回滚和交易的原因。这可以被视为一种“实时备份”机制。
答案 1 :(得分:3)
有些情况下,当您需要在许多相关表中插入/更新数据时 - 如果您没有事务逻辑,那么进程中间某处的任何错误都可能导致数据不一致。
简单的例子。假设您需要将订单表头数据插入订单表并将订单行插入行表。您插入订单标题,读取标识,开始插入订单行 - 但是第二次插入无论出于何种原因都会失败。只有从这种情况中恢复的可靠方法是回滚第一个插入 - 显式(当你的数据库连接处于活动状态时)或隐式(当链接断开时)。