トランザクション¶
トランザクションとは、 アプリケーションの仕様上それ以上分割することができない一連の処理 の単位です。 多くの場合2つ以上のデータの更新処理を行います。
銀行振込におけるトランザクション¶
AさんからBさんに、10,000円を振り込むことを考えてみましょう。以下の処理を同時に行います。
Aさんの口座から10,000円を差し引く。
Bさんの口座に10,000円を加算する。
重要なことは、この2つの処理は同時に実行され、成立しなければならないことです。 Aさんの口座を差し引いたあとで何かしらシステムに障害が発生し、Bさんの口座の残高が増えないと大変なことになります。 こういった場合に備え 全ての処理が正常に終了しない場合、全部取り消して元の状態に戻す ことになります。
「Aさんの口座からN円差し引く」と「Bさんの口座にN円を加算する」は、分割することができない処理です。 これがトランザクションです。
トランザクション制御¶
トランザクションを適切に行うためには、2つの側面があります。
エラーが発生したら、トランザクションを開始する前の状態に戻す
正しくトランザクションの処理ができた場合に、処理の確定する
技術的なエラーが発生してしまった場合、トランザクションを開始する前に必ず戻します。 このことを、ロールバック(roll back) と言います。巻き戻す、という意味です。 また、トランザクションで記述した処理を確定させることを コミット(commit) と言います。