繁体   English   中英

交易提交?

[英]transaction commit?

有人可以解释何时以及为什么使用commit吗? http://msdn.microsoft.com/en-us/library/ms190295.aspx

1)更新tableX recordM

2)在表Y记录中更新N

3)更新tableZ记录O

4)在这里使用提交

..

如果2)失败并且recordN没有更新,则回滚而不进行3)和4)提交? 那是你会用它的地方吗?

每当一个或多个操作(事务)完成并且您希望更改数据库时,请使用commit。

在您的示例中,如果2)失败,则应进行回滚,并且操作1)将撤消操作,以便使数据库保持一致

例如。 如果您有书店系统,则每当出售书籍时,都必须执行以下操作:

    • 打折股票
    • 创建销售历史
    • 收取客户卡

您要么希望所有操作成功完成,要么什么都不做。 所以你应该:

  1. 开始翻译
  2. 执行步骤1,2,3
  3. 承诺

如果有问题,请全部回滚(撤消)

当您要将对偶操作视为一项操作时,请始终使用提交。 这意味着当至少一个失败时,所有错误都将恢复为提交前的状态。

这非常有用,因为某些动作应视为原子操作,例如。 银行业务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM