Share via


BeginTrans、CommitTrans 和 RollbackTrans 方法 (ADO)

這些交易方法會管理 Connection 物件內的交易處理,如下所示:

  • BeginTrans:開始新交易。

  • CommitTrans:儲存任何變更,並結束目前交易; 也可能會開始新交易。

  • RollbackTrans:取消目前交易期間所做的任何變更,並結束交易; 也可能會開始新交易。

語法

  
level = object.BeginTrans()  
object.BeginTrans  
object.CommitTrans  
object.RollbackTrans  

傳回值

BeginTrans 可作為函數呼叫,以傳回 Long 變數,表示交易的巢狀層級。

參數

object
Connection 物件。

連線

當您想要將對來源資料所做的一系列變更作為一個單位來儲存或取消時,請透過 Connection 物件來使用這些方法。 例如,若要在帳戶之間轉帳,您會從一個帳戶減去金額,並將相同金額加到另一個帳戶。 如果任一更新失敗,帳戶將不再平衡。 在開啟的交易內進行這些變更,可確保變更全部通過或不通過。

注意

並非所有提供者都支援交易。 請確認 Connection 物件的 Properties 集合中顯示提供者定義的屬性 "Transaction DDL",以表示提供者支援交易。 如果提供者不支援交易,呼叫其中一個方法將會傳回錯誤。

呼叫 BeginTrans 方法之後,提供者將不再立即認可您所做的變更,直到您呼叫 CommitTransRollbackTrans 結束交易為止。

對於支援巢狀交易的提供者,在開啟的交易內呼叫 BeginTrans 方法會開始新的巢狀交易。 傳回值表示巢狀層級:傳回值 "1" 表示您已開啟最上層交易 (即交易不會巢狀在另一個交易內),"2" 表示您已開啟第二層交易 (最上層交易內巢狀的交易),依此類推。 呼叫 CommitTransRollbackTrans 只會影響最近開啟的交易;您必須先關閉或復原目前交易,才能解決任何更上層的交易。

呼叫 CommitTrans 方法會儲存在連線上開啟的交易內所做的變更,並結束交易。 呼叫 RollbackTrans 方法會反轉在開啟的交易內所做的任何變更,並結束交易。 在沒有開啟的交易時,呼叫任一方法會產生錯誤。

根據 Connection 物件的 Attributes 屬性,呼叫 CommitTransRollbackTrans 方法可能會自動開始新交易。 如果 Attributes 屬性設定為 adXactCommitRetaining,提供者會在 CommitTrans 呼叫之後自動開始新交易。 如果 Attributes 屬性設定為 adXactAbortRetaining,提供者會在 RollbackTrans 呼叫之後自動開始新交易。

遠端資料服務

用戶端 Connection 物件上無法使用 BeginTransCommitTransRollbackTrans 方法。

套用至

Connection 物件 (ADO)

另請參閱

BeginTrans、CommitTrans 和 RollbackTrans 方法範例 (VB)
BeginTrans、CommitTrans 和 RollbackTrans 方法範例 (VC++)
Attributes 屬性 (ADO)