認可及回復交易

若要以手動認可模式認可或復原交易,應用程式會呼叫 SQLEndTran。 支援交易的 DBMS 驅動程式通常會藉由執行 COMMITROLLBACK 陳述式來實作此函數。 當連線處於自動認可模式時,驅動程式管理員不會呼叫 SQLEndTran;即使應用程式嘗試回復交易,也只會傳回 SQL_SUCCESS。 由於不支援交易的 DBMS 驅動程式一律處於自動認可模式,因此可以實作 SQLEndTran 以傳回SQL_SUCCESS,而不需執行任何動作或不實作任何項目。

注意

應用程式不應該使用 SQLExecuteSQLExecDirect 執行 COMMITROLLBACK 陳述式來認可或復原交易。 這樣做的效果是不明確的。 可能的問題包括驅動程式不再知道交易何時為作用中,而且這些陳述式會因不支援交易的資料來源而失敗。 這些應用程式應該改為呼叫 SQLEndTran

如果應用程式將環境控制代碼傳遞至 SQLEndTran,但未傳遞連線控制代碼,驅動程式管理員會在概念上呼叫 SQLEndTran,並針對環境中具有一或多個作用中連線的每個驅動程式,使用環境控制代碼呼叫 SQLEndTran。 驅動程式接著會在環境中每個連線上認可交易。 不過,請務必了解驅動程式和驅動程式管理員都不會在環境中的連線上執行兩階段認可;這只是程式設計的便利性,以便同時針對環境中所有連線呼叫 SQLEndTran

(一般會使用兩階段認可來認可分散於多個資料來源的交易。在第一階段中,資料來源會輪詢是否能夠認可其交易的一部分。在第二階段中,交易的認可實際上會在所有資料來源上發生。如果任何資料來源在第一階段回覆其無法認可交易,則不會發生第二階段。)