TCOMMIT
Synopsis
TCOMMIT:pc TC:pc
引数
pc | オプション — 後置条件式。 |
概要
TCOMMIT は、対応する TSTART によって開始されたトランザクションの正常終了を表します。
TCOMMIT は $TLEVEL 特殊変数の値をデクリメントし、$TLEVEL が 0 に達した場合のみ、トランザクションを終了させます。通常、TCOMMIT が TSTART と同じ回数呼び出されたときに、トランザクションは終了します。入れ子になったトランザクションの間に行われた変更は、$TLEVEL が 0 になるまでコミットされません。
$TLEVEL が既に 0 のときに TCOMMIT を呼び出すと、<COMMAND> エラーが返されます。このケースが該当するのは、処理中のトランザクションがないとき、TCOMMIT コマンドの値が TSTART コマンドの値よりも大きいとき、または TROLLBACK コマンドの後に TCOMMIT を呼び出した場合です。対応する $ZERROR 値は、<COMMAND>、エラーの位置 (例えば +3^mytest)、およびデータ・リテラル *NoTransaction から構成されます。
引数
pc
オプションの後置条件式。Caché は、後置条件式が True (0 以外の数値に評価される) の場合にこのコマンドを実行します。Caché は、後置条件式が False (0 に評価される) の場合はコマンドを実行しません。詳細は、"Caché ObjectScript の使用法" の "コマンド後置条件式" を参照してください。
例
TCOMMIT は、TROLLBACK コマンドおよび TSTART コマンドと共に使用できます。これら 3 つのトランザクション処理コマンドを一緒に使用する方法の例については、"TROLLBACK" と "TSTART" を参照してください。
メモ
入れ子にされた TSTART / TCOMMIT
TSTART/TCOMMIT を呼び出したモジュール、またはそれらが呼び出すモジュールで発行された他の TSTART/TCOMMIT とは独立して、そのモジュールが TSTART と TCOMMIT の組み合わせを正常に実行できるように、Caché は TSTART/TCOMMIT コマンドの入れ子をサポートします。トランザクションの現在の入れ子のレベルは、特殊変数 $TLEVEL で記録されます。一番外側の該当する TCOMMIT が実行されると、つまり $TLEVEL が 0 に戻ると、トランザクションはコミットされます。
入れ子になった個々のトランザクションは TROLLBACK 1 を呼び出すことでロールバックでき、現在のすべてのトランザクションは TROLLBACK を呼び出すことでロールバックできます。TROLLBACK は、TSTART が発行されているレベル数に関係なく、有効なトランザクション全体をロールバックし、$TLEVEL を 0 に設定します。
ネットワーク・トランザクション
ネットワーク上で複数のトランザクションの実行を同時に行うには、ZSYNC コマンドを使用します。
同期コミット
TCOMMIT コマンドは、ディスクへのトランザクションに関連するジャーナル・データのフラッシュを要求します。このディスク書き込み操作の完了を待つかどうかは、構成可能なオプションです。
管理ポータルに進み、システム, 構成, 互換性設定 を選択します。[SynchCommit] の現在の設定を表示して編集します。“true” に設定すると、TCOMMIT はジャーナル・データの書き込み操作が完了するまで待機します。“false” に設定すると、TCOMMIT はジャーナル・データの書き込み操作の完了を待機しません。既定は “false” です。SynchCommit 設定の変更を有効にするには、再起動が必要です。
SQL とトランザクション
ObjectScript と SQL のトランザクション・コマンドは完全に互換性があり、置き換え可能ですが、以下の例外があります。
ObjectScript TSTART と SQL START TRANSACTION はどちらも、トランザクションが進行中でない場合にトランザクションを開始します。ただし、START TRANSACTION では、入れ子になったトランザクションはサポートされません。そのため、入れ子になったトランザクションが必要な場合 (または必要になる可能性がある場合) には、トランザクションを TSTART で始めることをお勧めします。SQL 標準との互換性が必要な場合は、START TRANSACTION を使用してください。
ObjectScript トランザクション処理は、入れ子になったトランザクションを限定的にサポートします。SQL トランザクション処理はトランザクション内のセーブポイントをサポートします。
関連項目
-
TROLLBACK コマンド
-
TSTART コマンド
-
$TLEVEL 特殊変数
-
"Caché ObjectScript の使用法" の "トランザクション処理での ObjectScript の使用法"