トランザクション
更新 : 2007 年 11 月
トランザクションの概念は、データベースの結果の状態が、一連の操作すべての成功に依存するケースを処理するために開発されました。このような状況は、後続の操作によって前の操作の結果が変更される場合があるために発生します。このような場合は、いずれかの操作に失敗すると、結果の状態が不定になることがあります。
この問題を解決するために、トランザクションは、最終的な結果の整合性が保証されるように一連の操作をグループ化します。すべての操作に成功してからコミット (データベースに書き込み) するか、トランザクション全体が失敗するかのどちらかです。トランザクションのキャンセルは、ロールバックと呼ばれます。ロールバックを使用すると、変更を復元し、データベースをトランザクション前の状態に戻すことができます。
たとえば、自動化された銀行トランザクションで口座 A から口座 B に振り替える場合、A からの引き落とし操作と B への預け入れ操作は、必ず両方とも成功させるか、両方とも失敗させるかのどちらかにする必要があります。
トランザクションには、次の性質を意味する ACID プロパティが必要です。
分割不能性 トランザクションは分割不能な作業単位であり、1 回だけ実行されます。すべての作業が実行されるか、まったく実行されません。
一貫性 トランザクションは、データの一貫性を保ち、一貫性のあるデータの状態を別の一貫性のある状態に変換します。トランザクションにより連結されたデータの意味は保持される必要があります。
分離性 トランザクションは分離単位であり、それぞれ同時トランザクションからは独立して発生します。1 つのトランザクションが、他のトランザクションの中間段階に関与しないようにする必要があります。
持続性 トランザクションは復元の単位です。トランザクションが成功した場合は、システムがクラッシュまたはシャットダウンしてもその更新内容は保持されます。トランザクションが失敗した場合、システムはトランザクションをコミットする前の状態のままになります。
トランザクションは、OLE DB (「OLE DB でのトランザクションのサポート」を参照) または ODBC (「トランザクション (ODBC)」を参照) でサポートできます。
分散トランザクションは、分散されたデータ (複数のネットワーク コンピュータ システムにあるデータ) を更新するトランザクションです。トランザクションを分散システムでサポートする場合は、OLE DB トランザクション サポートではなく Microsoft .NET Framework を使用する必要があります。
Microsoft .NET Framework でのトランザクションについては、『Windows Software Development Kit (SDK)』の「トランザクション処理」を参照してください。