blog

第 24 章 Caché コマンド・ブック TCOMMIT コマンド

トランザクションが正常に完了したことをマークします。 TSTART および SQL START はどちらも、現在のトランザクションがない場合にトランザクションを開始します。しかし、STARTは入れ子ト...

Nov 16, 2020 · 3 min. read

Caché コマンド・ブック TCOMMIT コマンド

トランザクションが正常に完了したことを示します。

ハイライト

  1. TLEVEL SQL トランザクション処理では、トランザクション内のセーブポイントがサポートされます。
  2. 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を呼び出すとエラーになります。これは、トランザクションが進行中でないときにTCOMMITが発行された場合、TCOMMITコマンドの数がTSTARTコマンドの数より多い場合、またはTCOMMITがTROLLBACKコマンドの後に発行された場合に発生する可能性があります。対応する$ZERROR値は、エラーの場所とデータ・テキスト*NoTransactionで構成されます。

パラメータ

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 トランザクション処理では、トランザクション内のセーブポイントがサポートされます。

Read next

UIコンポーネントの初期アーキテクチャのアイデア

webpack-loader経由でdesign.mdからモデルオブジェクトを生成 コンポーネントモデルオブジェクト コンポーネントの開発と設計はうまく分離されています。コンポーネント設計はコンポーネント開発から切り離されますが、コンポーネントモデルはローダ経由で構築できます。コンポーネントモデルは、ビュー実装ライブラリから切り離されたコンポーネント化のアイデアにのみ依存します。このモデルは、任意のビューと組み合わせることができます。

Nov 15, 2020 · 2 min read