トランザクションでの作業

提供: InterBase

API ガイド へ戻る


この章では、次の操作を行う方法について説明します:

  • パラメータを格納するトランザクション パラメータ バッファ(TPB)を設定する
  • トランザクション ハンドルを設定および初期化する
  • トランザクションを制御する API 関数を使用する
  • トランザクション ID を取得する

アプリケーション内のデータ定義とデータ操作は、1 つの トランザクション --- 1 つの作業単位として扱わなければならない一連の動作を完了させるために、協調して機能する 1 つまたは複数の文 --- のコンテキストで発生します:

InterBase では、1 つの接続で、同時に複数のトランザクションを開くことができます。 これら同時に走るトランザクションは、お互いに独立しており、競合が生じる場合もあります。 1 つの接続内での複数の並列トランザクションは、複数の異なる方法でデータベースを使うようなアプリケーションに便利です。

次の表は、トランザクション操作に最も汎用的に使用される API 関数をまとめたものです。 表の中の関数の順序は、アプリケーションで通常記述されるに対応しています。

関数 目的

isc_start_transaction()

1 つ以上のデータベースに対して、新規トランザクションを開始。 すでに宣言され、値を設定された TPB を使用。

isc_commit_retaining()

トランザクションの変更をコミットし、その後のトランザクション処理のために、そのトランザクション コンテキストを保持。

isc_commit_transaction()

トランザクションの変更をコミットし、トランザクションを終了。

isc_dpb_transaction

データベースの作成または復旧時に、トランザクション ID の開始時の送信に使用されます。 このトランザクション ID は、64 ビット Integer 型を同じ大きさにできます。

  • 1 バイトは、値のデータ型の長さを表し、short/integer/int64 型は、トランザクション ID 値を表します。

isc_rollback_transaction()

トランザクションの変更をロールバックし、トランザクションを終了。

isc_spb_res_starting_trans

これはサービス API 用。 isc_dpb_transaction と似ているが、同様の柔軟性はない。 int64 データ型値のみを要求する。

  • トランザクション ID 値を表す int64 型。

これらの関数の他に、次の表では、比較的使用頻度の低い API トランザクション関数を、使用時に通常現れる順序で示します。

関数 目的

isc_start_multiple()

1 つ以上のデータベースに対して、新規トランザクションを開始。 引数の数が変化する関数をサポートしていない、FORTRAN などのプログラミング言語に対して、isc_start_transaction() の代わりに使用。

isc_prepare_transaction()

isc_commit_transaction() を呼び出す前に、2 相コミットの最初のフェーズを実行。 他の外部イベントとの 2 相コミットを調整するために使用。

isc_prepare_transaction2()

isc_commit_transaction() を呼び出す前に、2 相コミットの最初のフェーズを実行。 他の外部イベントとの 2 相コミットを調整するために使用。 この呼び出しでは、外部イベントを記述するメッセージを受け取ります。

isc_rollback_retaining()

トランザクションの変更をロールバックするが、トランザクション コンテキストは保持。

トピック