支援 OLE DB 中的異動
交易是將數據源的一系列更新分組或批次的方式,以便一次成功且一次認可或(如果其中任一項失敗),且整個交易都會回復。 此程式可確保數據源上的結果完整性。
OLE DB 支援使用下列三種方法的交易:
會話和交易的關聯性
單一數據源物件可以建立一或多個會話物件,每個物件都可以在指定時間在交易範圍內或外部。
當會話未輸入交易時,數據存放區上該會話內完成的所有工作都會在每個方法呼叫上立即認可。 (這有時稱為自動認可模式或隱含模式。
當會話進入交易時,數據存放區上該會話內完成的所有工作都是該交易的一部分,並認可或中止為單一單位。 (這有時稱為手動認可模式。
交易支援是提供者特定的。 如果您使用的提供者支援交易,則支援 ITransaction
和 ITransactionLocal
的會話物件可以輸入 (非巢狀) 交易。 OLE DB Templates 類別 CSession 支持這些介面,而且是在 Visual C++ 中實作交易支持的建議方式。
開始和結束交易
您可以在取用者的資料列集物件中呼叫 StartTransaction
、 Commit
和 Abort
方法。
呼叫 ITransactionLocal::StartTransaction
會啟動新的本機交易。 當您啟動交易時,在認可交易之前,後續作業所授權的任何變更都不會套用至數據存放區。
呼叫 ITransaction::Commit
或 ITransaction::Abort
結束交易。 Commit
會導致交易範圍內的所有變更都套用至數據存放區。 Abort
會讓交易範圍內的所有變更取消,而且數據存放區會保留於交易啟動前的狀態。
巢狀交易
當您 在會話上已經存在使用中交易時啟動新的本機交易時,就會發生巢狀交易 。 新的交易會以目前交易下方的巢狀交易的形式啟動。 如果提供者不支援巢狀交易,當會話上已經有作用中交易時呼叫 StartTransaction
,就會傳回XACT_E_XTIONEXISTS。
分散式交易
分散式交易是更新分散式數據的交易;也就是說,多個網路計算機系統上的數據。 如果您想要透過分散式系統支援交易,您應該使用 .NET Framework,而不是 OLE DB 交易支援。