共用方式為


異動 (ODBC)

本主題適用於 MFC ODBC 類別。

交易是將資料來源 的一系列更新 分組或批次的方式,因此,如果您回復交易,則一次認可或全部認可。 如果您未使用交易,則會自動認可資料來源的變更,而不是視需要認可。

注意

並非所有 ODBC 資料庫驅動程式都支援交易。 CanTransact呼叫 CDatabase CRecordset 物件的成員函 式,以判斷驅動程式是否支援指定資料庫的交易。 請注意, CanTransact 不會告訴您資料來源是否提供完整的交易支援。 您也必須呼叫 CDatabase::GetCursorCommitBehaviorRollbackCDatabase::GetCursorRollbackBehavior 之後 CommitTrans ,才能檢查交易對開啟 CRecordset 物件的影響。

AddNew呼叫 物件的 和 Edit 成員函式 CRecordsetUpdate ,會立即影響資料來源。 Delete 呼叫也會立即生效。 相反地,您可以使用交易,其中包含對 、 EditUpdateDelete 的多個呼叫,這些呼叫會在您明確呼叫 CommitTransAddNew 之前執行,但未認可。 藉由建立交易,您可以執行一系列這類呼叫,同時保留復原這些呼叫的能力。 如果重要資源無法使用,或其他一些條件會防止整個交易完成,您可以復原交易,而不是認可交易。 在此情況下,屬於交易的變更都不會影響資料來源。

注意

目前,如果您已實作大量資料列擷取,類別 CRecordset 就不支援資料來源的更新。 這表示您無法呼叫 AddNewEditDeleteUpdate 。 不過,您可以撰寫自己的函式來執行更新,然後在指定的交易內呼叫這些函式。 如需大量資料列擷取的詳細資訊,請參閱 記錄集:大量擷取記錄 (ODBC)

注意

除了影響記錄集之外,只要您使用與 CDatabase 物件相關聯的 ODBC HDBC 或以該 HDBC 為基礎的 ODBC HSTMT ,交易就會影響您直接執行的 SQL 語句。

當您有多個必須同時更新的記錄時,交易特別有用。 在此情況下,您想要避免半完成的交易,例如,如果在上次更新之前擲回例外狀況,就可能發生這種狀況。 將這類更新分組到交易允許從變更復原(回復),並將記錄傳回至預先交易狀態。 例如,如果銀行將金額從 A 帳戶轉移至帳戶 B,則從 A 取款和 B 的存款都必須成功處理資金,否則整個交易必須失敗。

在資料庫類別中,您可以透過 CDatabase 物件執行交易。 CDatabase物件代表與資料來源的連接,而與該 CDatabase 物件相關聯的一或多個記錄集會透過 recordset 成員函式在資料庫的資料表上操作。

注意

僅支援一個層級的交易。 您無法巢狀交易,也無法將交易跨越多個資料庫物件。

下列主題提供有關交易執行方式的詳細資訊:

另請參閱

開放式資料庫連接 (ODBC)