Caché コマンド・ブック TCOMMIT コマンド
トランザクションが正常に完了したことを示します。
ハイライト
- TLEVEL SQL トランザクション処理では、トランザクション内のセーブポイントがサポートされます。
- ObjectScript TSTART と SQL START TRANSACTION はどちらも、現在のトランザクションがない場合にトランザクションを開始します。ただし、START TRANSACTION は入れ子になったトランザクションをサポートしません。したがって、入れ子になったトランザクションが必要な場合は、TSTART を使用してトランザクションを開始するのが最善です。
TCOMMIT:pc TC:pc
パラメータ
pc - オプションの後条件式。
TCOMMITは、対応するTSTARTによって開始されたトランザクションの正常終了をマークします。
TCOMMIT は、特殊変数 $TLEVEL の値をデクリメントします。Caché は、$TLEVEL が 0 になったときにのみ、トランザクションを終了します。通常は、TCOMMIT が TSTART と同じ回数呼び出されたときに終了します。ネストされたトランザクション中に行われた変更は、$TLEVEL=0 になるまでコミットされません。
TLEVELが既に0のときにTCOMMITを呼び出すと
パラメータ
pc
オプションの事後条件式。postcondition 式が TRUE (計算結果がゼロ以外の値) の場合、Caché はコマンドを実行します。postcondition 式が False の場合、Caché はコマンドを実行しません。
例
TCOMMIT は、TROLLBACK コマンドおよび TSTART コマンドと共に使用できます。
注
入れ子の TSTART/TCOMMIT
Caché は、TSTART/TCOMMIT コマンドの入れ子をサポートしています。これにより、モジュールは、TSTART/TCOMMIT のペアを、それらを呼び出したモジュールまたはそれらが呼び出したモジュールで発行された他の TSTART/TCOMMIT とは独立して正しく発行できます。トランザクションの現在の入れ子レベルは、特別な変数$TLEVELによって追跡されます。トランザクションは、最も外側の一致するTCOMMITが発行されたとき、つまり$TLEVELがゼロに戻ったときにコミットします。
TROLLBACKは、発行されたTSTARTのレベル数に関係なく、有効なトランザクション全体をロールバックし、$TLEVELをゼロに設定します。
ネットワーク・トランザクション
ネットワーク上で実行されたトランザクションを同期させるには、ZSYNC コマンドを使用します。
コミットの同期
TCOMMITコマンドは、トランザクションに関与するログ・データをディスクにフラッシュするよう要求します。このディスク書き込み操作の完了を待つかどうかは、設定可能なオプションです。
管理ポータルに移動し、[Home] > [Configuration] > [Compatibility Settings] を選択します。SynchCommit の現在の設定を表示および編集します。
trueに設定すると、TCOMMITはログデータの書き込み操作が完了するまで完了しません。falseに設定すると、TCOMMITは書き込み操作が完了するまで待機しません。デフォルト値は "false"。SynchCommit設定の変更を有効にするには、再起動が必要です。
SQL
CachéObjectScript コマンドと SQL TRANSACTION コマンドは、以下の例外を除き、完全に互換性があり、交換可能です:
ObjectScript TSTART と SQL START TRANSACTION はどちらも、現在のトランザクションがない場合にトランザクションを開始します。ただし、START TRANSACTION は入れ子になったトランザクションをサポートしません。したがって、入れ子になったトランザクションが必要な場合は、TSTART を使用してトランザクションを開始するのが最善です。標準SQLとの互換性が必要な場合は、START TRANSACTIONを使用してください。
SQL トランザクション処理では、トランザクション内のセーブポイントがサポートされます。