トランザクション

トランザクションとは、 アプリケーションの仕様上それ以上分割することができない一連の処理 の単位です。 多くの場合2つ以上のデータの更新処理を行います。

銀行振込におけるトランザクション

AさんからBさんに、10,000円を振り込むことを考えてみましょう。以下の処理を同時に行います。

  • Aさんの口座から10,000円を差し引く。
  • Bさんの口座に10,000円を加算する。

重要なことは、この2つの処理は同時に実行され、成立しなければならないことです。 Aさんの口座を差し引いたあとで何かしらシステムに障害が発生し、Bさんの口座の残高が増えないと大変なことになります。 こういった場合に備え 全ての処理が正常に終了しない場合、全部取り消して元の状態に戻す ことになります。

「Aさんの口座からN円差し引く」と「Bさんの口座にN円を加算する」は、分割することができない処理です。 これがトランザクションです。

トランザクション制御

トランザクションを適切に行うためには、2つの側面があります。

  • エラーが発生したら、トランザクションを開始する前の状態に戻す
  • 正しくトランザクションの処理ができた場合に、処理の確定する

技術的なエラーが発生してしまった場合、トランザクションを開始する前に必ず戻します。 このことを、ロールバック(roll back) と言います。巻き戻す、という意味です。 また、トランザクションで記述した処理を確定させることを コミット(commit) と言います。