tx_rollback
名称
トランザクションのロールバック
形式
ANSI C ,C++ の形式
#include <tx.h>
int tx_rollback(void)
K&R版 Cの形式
#include <tx.h>
int tx_rollback()
機能
関数tx_rollback()は,呼び出しスレッドのトランザクションの作業をロールバックします。
transaction_control特性が,TX_UNCHAINEDに設定されていた場合で,tx_rollback()がリターンすると,呼び出し元スレッドはトランザクションモードにはいません。しかし,transaction_control特性が TX_CHAINEDに設定されていた場合で,tx_rollback()がリターンすると,呼び出し元スレッドは新しいトランザクション下のトランザクションモードにとどまります。transaction_control特性については,tx_set_transaction_control()を参照してください。
リターン値
成功した場合,tx_rollback()はTX_OKを返します。これは,負ではないリターン値です『0が返ります』『transaction_control特性がTX_CHAINEDに設定されていた場合は,新しいトランザクションが開始されます』『tx_rollback()を呼び出したSPPがルートトランザクションブランチでない場合は,実際のロールバック処理はしないで,そのトランザクションブランチをrollback_only状態にするだけです。ルートトランザクションブランチの同期点処理でロールバックの指示があるまで,トランザクションモードのままとどまります。』
エラー
次のような場合,tx_rollback()はエラーリターンして,次のうちどれか一つの値を返します。これは,負のリターン値です。
リターン値 | リターン値(数値) | 意味 |
---|---|---|
TX_MIXED | -3 | トランザクションは部分的にコミット,部分的にロールバックしました。transaction_control特性がTX_CHAINEDと設定されていれば,新しいトランザクションが開始されます。 |
TX_HAZARD | -4 | 障害が原因で,トランザクションは部分的にコミット,部分的にロールバックした可能性があります。transaction_control特性がTX_CHAINEDに設定されていれば,新しいトランザクションが開始されます。 |
TX_PROTOCOL_ERROR | -5 | 関数は,適切でないコンテクストで呼ばれました(例えば,呼び出し元がトランザクションモードでない)。 |
TX_FAIL | -7 | トランザクションマネジャ,または一つ以上のリソースマネジャで,回復できないエラーが起こりました。トランザクションマネジャ,または一つ以上のリソースマネジャのどちらか,またはその両方が,すでにアプリケーションに代わって作業できないことがエラーの原因です。呼び出し元のトランザクションに対する状態は不明です。 |
TX_COMMITTED | -9 | トランザクションは,ヒューリスティックにコミットしました。 transaction_control特性がTX_CHAINEDに設定されていれば,新しいトランザクションが開始されます。 |
TX_NO_BEGIN | -100 | トランザクションはロールバックしましたが,新しいトランザクションを開始できないで,呼び出し元はすでにトランザクションモードにいません。 このリターン値は,transaction_control特性がTX_CHAINEDのときだけ返ります。 |
TX_MIXED_NO_BEGIN | -103 | トランザクションは部分的にコミット,部分的にロールバックしました。新しいトランザクションは開始できないで,呼び出し元は,すでにトランザクションモードにはいません。 このリターン値は,transaction_control特性がTX_CHAINEDのときだけ返ります。 |
TX_HAZARD_NO_BEGIN | -104 | 障害が原因で,トランザクションは部分的にコミット,部分的にロールバックした可能性があります。新しいトランザクションは開始できないで,呼び出し元はすでにトランザクションモードではありません。 このリターン値は,transaction_control特性がTX_CHAINEDのときだけ返ります。 |
TX_COMMITTED_NO_BEGIN | -109 | トランザクションは,ヒューリスティックにコミットしました。新しいトランザクションは開始できないで,呼び出し元はすでにトランザクションモードにはいません。このリターン値は,transaction_control特性がTX_CHAINEDのときだけ返ります。 |
参照
tx_begin(),tx_set_transaction_control(),tx_set_transaction_timeout()
『指定例』
『if (tx_info(NULL) == 1 && tx_rollback() < 0)
fputs("cannot rollback transaction¥n",stderr);』
『OpenTP1で使う場合の注意事項』