表示: Delphi C++
表示設定

トランザクション

提供:RAD Studio XE2
移動: 案内, 検索

データベース アプリケーションの設計:インデックス への移動

トランザクションはアクションのグループであり,トランザクションがコミット(確定)される前に,そのすべてのアクションがデータベース内の 1 つまたは複数のテーブルに対して正常に実行されなければなりません。これらのアクションのいずれかが失敗すると,すべてのアクションはロールバックされます(元に戻されます)。

トランザクションは以下のことを保証します。

  • 単一のトランザクション内のすべての更新は,コミットされるか,破棄されて前の状態にロールバックされるかのどちらかになります。これは原子性と呼ばれます。
  • トランザクションはシステムの状態の正しい変化であり,状態の不変量を維持します。これは一貫性と呼ばれます。
  • 複数の同時トランザクションが,相互の部分的またはコミットされていない結果を参照することはありません。そのような参照は,アプリケーションの状態に非一貫性を生じさせることがあるからです。これは分離性と呼ばれます。
  • レコードへコミットされた更新は,通信障害,プロセス障害,およびサーバーのシステム障害などの障害があっても,そのまま残ります。これは持続性と呼ばれます。

このように,トランザクションは,1 つのデータベースコマンドまたは一連のコマンドの途中で発生するハードウェア障害に対して保護します。トランザクションログ機能により,ディスク媒体の障害の後でも持続状態を回復することができます。トランザクションはまた,SQL サーバーのマルチユーザー並行制御の基本にもなっています。すべてのユーザーがトランザクションだけを通してデータベースを使用しているときには,1 人のユーザーのコマンドが別のユーザーのトランザクションの統一性を乱すことは決してありません。SQL サーバーは,入ってくるトランザクションを管理し,トランザクションは全体として成功または全体として失敗したものとして扱われます。

トランザクションサポートは,ほとんどのローカルデータベースには含まれていませんが,Local InterBase はそれを提供しています。さらに,BDE ドライバは,いくつかのローカルデータベースに対して,制限付きのトランザクションサポートを提供しています。データベーストランザクションサポートは,データベース接続を表すコンポーネントによって提供されています。データベース接続コンポーネントを使ったトランザクションの管理の詳細は,「トランザクションの管理」を参照してください。

多層アプリケーションでは,データベース操作以外のアクションを含むトランザクションや複数のデータベースにわたるトランザクションを作成できます。多層アプリケーションにおけるトランザクションの使用の詳細は,「多層アプリケーションでのトランザクション管理」を参照してください。

関連項目

以前のバージョン
他言語版