SQLってどう使う?―その3 トランザクションの扱い

鈴木浩司(日本オラクル) 2007年12月07日 07時00分

  • このエントリーをはてなブックマークに追加

トランザクションとは?

 前回まででデータの取得・追加・削除・更新といった基本動作を学びました。今回はデータベースの重要な機能である、「トランザクション」の仕組みについてお話していきます。

 トランザクションという言葉を初めて聞くという読者の方もいらっしゃると思いますので、トランザクションとは何かを最初に簡単にお話しします。トランザクションとは簡単に言ってしまえば、「関連する処理のまとまり」のことを言います。実際、読者の皆さんの仕事においてもいろいろな関連する作業があり、それらの作業をこなして1つの仕事が終わりというようなになりますよね?データベースにおいて、関連する複数の処理を一つの処理単位にまとめた処理単位をトランザクションと呼び、データの整合性を確保するため、また、障害復旧のために利用されます。

 それでは、「銀行振込み」をひとつの例にして、データベースでのトランザクションの管理についてみていきましょう。「Aさんの口座からBさんの口座に5万円を振り込む」ということを行いたいとします。この場合、銀行でのシステムでは、以下のような一連の作業が必要になります。

  1. Aさんの口座から5万円を引く
  2. Bさんの口座に5万円を加える

 これらの作業が完了して初めて「振り込み」という1つのトランザクションが完了します。

図1. 銀行振込みのトランザクション

 では、もし仮に2)の作業の後にシステムに何らかの障害や不具合が発生してしまい、Aさんの口座から10万円引かれたのに、Bさんの口座にはまだ10万円加算されていない状態が発生してしまったらどうなるでしょうか?はい、もちろん大変な混乱が起きてしまいます。

 1つのトランザクションの中での処理は、必ず「すべて成功」か「すべて失敗」のどちらかである必要があります。上記の例の様に、「出金には成功して、入金には失敗」してしまうと出金した分の金額がどこかにいってしまい、結果としてデータの不整合が発生してしまいます。トランザクションでの処理が1つでも失敗したら「すべて失敗」としてデータベースに書き込みを行わず、そして、全ての処理に成功したときに全体を成功としてデータベースに書き込みを行い、処理を完了させる必要があります。

  • このエントリーをはてなブックマークに追加
関連キーワード
開発

関連ホワイトペーパー

SpecialPR

  • 「奉行シリーズ」の電話サポート革命!活用事例をご紹介

    「ナビダイヤル」の「トラフィックレポート」を利用したことで着信前のコール数や
    離脱数など、コールセンターのパフォーマンスをリアルタイムに把握するに成功。詳細はこちらから

  • デジタル変革か?ゲームセットか?

    デジタルを駆使する破壊的なプレーヤーの出現、既存のビジネスモデルで競争力を持つプレイヤーはデジタル活用による変革が迫られている。これを読めばデジタル変革の全体像がわかる!