這些事務(wù)方法按如下方式管理 Connection 對(duì)象中的事務(wù)進(jìn)程:
? | BeginTrans - 開始新事務(wù)。 |
? | CommitTrans - 保存任何更改并結(jié)束當(dāng)前事務(wù)。它也可能啟動(dòng)新事務(wù)。 |
? | RollbackTrans - 取消當(dāng)前事務(wù)中所作的任何更改并結(jié)束事務(wù)。它也可能啟動(dòng)新事務(wù)。 |
語(yǔ)法
level = object.BeginTrans()
object.BeginTrans
object.CommitTrans
object.RollbackTrans
返回值
BeginTrans 可以作為函數(shù)調(diào)用,用于返回指示事務(wù)嵌套層次的長(zhǎng)整型變量。
參數(shù)
object Connection 對(duì)象。
Connection
如果希望以獨(dú)立單元保存或取消對(duì)源數(shù)據(jù)所做的一系列更改,請(qǐng)使用這些具有 Connection 對(duì)象的方法。例如在貨幣轉(zhuǎn)帳時(shí),必須從帳戶中減去某個(gè)數(shù)額并將其對(duì)等數(shù)額添加到另一個(gè)帳戶。無(wú)論其中的哪個(gè)更新失敗,都將導(dǎo)致帳戶收支不平衡。在打開的事務(wù)中進(jìn)行這些更改可確保只能選擇進(jìn)行全部更改或不作任何更改。
注意 并非所有提供者都支持事務(wù)。需驗(yàn)證提供者定義的屬性“Transaction DDL”是否出現(xiàn)在 Connection 對(duì)象的 Properties 集合中,如果在則表示提供者支持事務(wù)。如果提供者不支持事務(wù),調(diào)用其中的某個(gè)方法將返回錯(cuò)誤。
一旦調(diào)用了 BeginTrans 方法,在調(diào)用 CommitTrans 或 RollbackTrans 結(jié)束事務(wù)之前,提供者將不再立即提交所作的任何更改。
對(duì)于支持嵌套事務(wù)的提供者來(lái)說(shuō),調(diào)用已打開事務(wù)中的 BeginTrans 方法將開始新的嵌套事務(wù)。返回值將指示嵌套層次:返回值為 1 表示已打開頂層事務(wù)(即事務(wù)不被另一個(gè)事務(wù)所嵌套),返回值為 2 表示已打開第二層事務(wù)(嵌套在頂層事務(wù)中的事務(wù)),依次類推。調(diào)用 CommitTrans 或 RollbackTrans 只影響最新打開的事務(wù);在處理任何更高層事務(wù)之前必須關(guān)閉或回卷當(dāng)前事務(wù)。
調(diào)用 CommitTrans 方法將保存連接上打開的事務(wù)中所做的更改并結(jié)束事務(wù)。調(diào)用 RollbackTrans 方法還原打開事務(wù)中所做的更改并結(jié)束事務(wù)。在未打開事務(wù)時(shí)調(diào)用其中任何一種方法都將引發(fā)錯(cuò)誤。
取決于 Connection 對(duì)象的 Attributes 屬性,調(diào)用 CommitTrans 或 RollbackTrans 方法都可以自動(dòng)啟動(dòng)新事務(wù)。如果 Attributes 屬性設(shè)置為 adXactCommitRetaining,提供者在 CommitTrans 調(diào)用后會(huì)自動(dòng)啟動(dòng)新事務(wù)。如果 Attributes 屬性設(shè)置為 adXactAbortRetaining,提供者在調(diào)用 RollbackTrans 之后將自動(dòng)啟動(dòng)新事務(wù)。
遠(yuǎn)程數(shù)據(jù)服務(wù)
BeginTrans、CommitTrans 和 RollbackTrans 方法在客戶端 Connection 對(duì)象上無(wú)效。