交易提交?

时间:2011-03-24 06:48:58

标签: sql sql-server sql-server-2005 sql-server-2008

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

1)tableX recordM

中的更新

2)在tableY recordN

中更新

3)tableZ recordO中的更新

4)在这里使用提交

...

如果2)失败并且记录N没有更新,那么回滚并且不进行3)和4)提交?你会在哪里使用它?

2 个答案:

答案 0 :(得分:2)

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

在你的例子中,如果2)失败,你应该做回滚,他们操作1)将撤消,这样可以保持数据库的一致性

例如。如果你有一个书店系统,每当你出售一本书时,你必须做几个操作:

    • 打折股票
    • 创建销售历史
    • 向客户的卡充电
  1. 您希望所有操作都成功完成或不执行任何操作。 所以你应该:

    1. 开始转换
    2. 执行步骤1,2,3
    3. commit
    4. 如果出现问题,请回滚(撤消)所有

答案 1 :(得分:1)

当您希望将一对操作视为一个操作时,请始终使用提交。这意味着当至少一个失败全部在提交之前恢复到状态时。

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