ローカル トランザクションの利用

提供: RAD Studio
移動先: 案内検索

BDE でのトランザクションの利用:インデックス への移動

メモ: ボーランド データベース エンジン(BDE)の使用は推奨されません。今後 BDE は機能拡張されません。たとえば、BDE では Unicode がサポートされていません。BDE を使用して新たに開発しないことをお勧めします。既存のデータベース アプリケーションを BDE から dbExpress に移行することを検討してください。

BDE は、Paradox、dBASE、Access、および FoxPro のテーブルに対するローカルトランザクションをサポートしています。コーディングの面では、ローカルトランザクションでもリモートデータベースサーバーにあるトランザクションでも違いはありません。

メモ:  Paradox、dBASE、Access、および FoxPro のローカルテーブルでトランザクションを使用する場合、TransIsolation はデフォルトの tiReadCommitted ではなく tiDirtyRead に設定してください。ローカルテーブルで TransIsolationtiDirtyRead 以外に設定されると BDE エラーが返されます。

ローカルテーブルに対してトランザクションを開始すると、そのテーブルに対して実行された更新がログに記録されます。ログの各レコードには、レコードの以前のレコードバッファが記録されます。トランザクションがアクティブな場合、更新されるレコードは、そのトランザクションがコミットされるかロールバックされるまでロックされます。ロールバック時には、更新したレコードに対して以前のレコードバッファが使用され、レコードが更新前の状態に復元されます。

ローカルトランザクションは、SQL サーバーまたは ODBC ドライバに対するトランザクションよりも制限があります。特に、ローカルトランザクションには以下の制限があります。

  • クラッシュの自動復元はない
  • データ定義文はサポートされていない
  • 一時テーブルに対してはトランザクションを実行できない
  • TransIsolation レベルは tiDirtyRead 以外に設定してはならない
  • Paradox の場合、ローカルトランザクションを実行できるのは、有効なインデックスがあるテーブルに対してだけである。インデックスがない Paradox テーブルでは、データをロールバックできない
  • 少数のレコードしかロックおよび変更できない。Paradox テーブルでは 255 レコードまで、dBASE テーブルでは 100 レコードまでに限られる
  • BDE ASCII ドライバに対してはトランザクションを実行できない
  • トランザクション中にテーブル上でカーソルを閉じると、以下の場合を除いて、トランザクションはロールバックされる:
    • 複数のテーブルを開いているとき
    • 変更しなかったテーブル上でカーソルを閉じるとき

関連項目