2011-03-24 288 views
0

有人可以解釋何時以及爲什麼使用提交? http://msdn.microsoft.com/en-us/library/ms190295.aspx交易提交?

1)在TableX的recordM在tableY recordN

2)更新

3)在tableZ recordO更新

4)更新使用提交這裏

..

在2)失敗並且recordN未更新的情況,則回滾並且不繼續到3)和4)提交?是你在哪裏使用它?

回答

2

當一個或多個操作(事務)完成時使用提交,並且您希望更改數據庫。

在你的榜樣,如果2)失敗了,你應該做的回滾和它們的操作1)將撤消,因此,將讓您的數據庫保持一致

如。如果你有一個書店系統,只要你賣一本書,你必須做一些操作:

    • 打折股票
    • 創建銷售歷史
    • 收取客戶卡

你會希望所有的操作都成功完成,或者什麼都不做。 所以你應該:

  1. 開始TRANSATION
  2. 執行步驟1,2,3
  3. 提交

如果做錯了事,回滾(撤銷)所有

+0

我想,它自動每次更新後自動提交?你可以在SQL Server中打開或關閉此功能嗎? – 001 2011-03-24 07:12:04

+0

默認情況下它會自動提交,是的,你可以使用SET IMPLICIT_TRANSACTION OFF,但通常你會使用api來關閉它。如果我是正確的,每當你調用transaction.begin()它會關閉自動提交 – Kossel 2011-03-24 07:15:45

1

當您想將對偶操作視爲一項操作時始終使用提交。這意味着當至少有一次失敗時,在提交之前全部恢復到狀態。

這是非常有用的,因爲一些行爲應該被視爲原子操作,例如。銀行業務。