Btrieve API Guide (v11)

Begin Transaction(19 または 1019)

Begin Transaction オペレーション(B_BEGIN_TRAN)では、トランザクションの開始を定義します。トランザクションは、複数の Btrieve API オペレーションを単一イベントとして実行する必要がある場合に有用です。たとえば、いくつかのオペレーションのうち少なくとも 1 つでもオペレーションが正常に終了しないと、データベースの論理的整合性が保てなくなる場合には、トランザクションを使用してください。

一連のオペレーションを Begin Transaction と End Transaction オペレーションで囲んでおくと、明示的な End Transaction オペレーション(20)でトランザクションの完了を要求しない限り、トランザクショナル インターフェイスはその間に実行された複数のオペレーションをすべて取り消すことができます。トランザクション内で加えられた変更は、End Transaction オペレーションの実行が正常に終了するまで、ほかのユーザーからは見ることができません。

トランザクショナル インターフェイスは、ファイルやパフォーマンスに多大な影響を与えるという理由で、いくつかのオペレーションについてトランザクション中の実行を禁止しています。この特定のオペレーションとは、Set Owner、Clear Owner、Create Index、Drop Index です。

パラメーター

 
オペレーション コード
ポジション ブロック
データ バッファー
データ バッファー長
キー バッファー
キー番号
送り値

 
 
 
 
 
戻り値
 
 
 
 
 
 

前提条件

Begin Transaction オペレーションを発行する前に、先行するトランザクションを終了または中止しておく必要があります。

手順

オペレーション コードに 19 を設定して排他トランザクションを開始するか、1019 を設定して並行トランザクションを開始します。トランザクショナル インターフェイスでは、オペレーション コード以外の Begin Transaction 呼び出しパラメーターはすべて無視されます。

Begin Transaction オペレーションでは、デフォルトのロック バイアスを指定できます。

並行トランザクションの Begin Transaction オペレーションでは、+500 をオペレーション コードに追加できます(1519)。追加すると、トランザクション内の Insert、Update、Delete の各オペレーションが、トランザクショナル インターフェイスによって再試行されなくなります。

さらに、+500 バイアスをデフォルトのロック バイアスと組み合わせることもできます。たとえば、1019 + 500 + 200(1719)を使用すると、Insert、Update および Delete オペレーションの再試行を抑え、並行トランザクションが実行されます。また同時に、単一レコードの読み取りノーウェイト ロックが指定されます。

トランザクションおよびロックの詳細については、『Pervasive PSQL Programmer's Guide』を参照してください。

結果

Begin Transaction オペレーションが正常に終了した場合は、トランザクショナル インターフェイスからステータス コード 0 が返されます。

Begin Transaction オペレーションが正常に実行されなかった場合は、トランザクショナル インターフェイスから次のステータス コードのいずれかが返されます。

36
アプリケーションでトランザクション エラーが発生しました。
37
別のトランザクションが実行中です。

ポジショニング

Begin Transaction オペレーションは、ファイルのカレンシー情報にまったく影響しません。


Abort Transaction(21)

Clear Owner(30)