最終更新日:2026年7月25日
fe fe-technology database
まず結論
トランザクションとは、データベースに対する一連の処理を、ひとまとまりの単位として扱う考え方です。
基本情報技術者試験では、次のように覚えると判断しやすいです。
トランザクション
= 途中で分けてはいけない処理のまとまり
たとえば銀行振込では、出金だけ成功して入金が失敗すると困ります。
そのため、出金と入金をまとめて1つのトランザクションとして扱い、
全部成功したら確定、途中で失敗したら取り消し にします。
直感的な説明
トランザクションは、銀行振込で考えると分かりやすいです。
AさんからBさんへ1万円を振り込むとします。
このとき、データベースでは少なくとも次の2つの更新が必要です。
1. Aさんの残高を1万円減らす
2. Bさんの残高を1万円増やす
もし、1だけ成功して2が失敗するとどうなるでしょうか。
Aさんの残高だけ減る
Bさんの残高は増えない
これでは、お金が消えたように見えてしまいます。
そこで、2つの処理を別々に考えるのではなく、
1つのまとまり として扱います。
Aさんの残高を減らす
Bさんの残高を増やす
ここまで全部で1セット
この1セットがトランザクションです。
すべて成功すれば、結果を確定します。
途中で失敗すれば、最初から何もなかった状態に戻します。
全部成功 → コミット
途中で失敗 → ロールバック
つまり、トランザクションは、データベースに中途半端な更新を残さないための考え方です。
定義・仕組み
トランザクションは、データベースに対する複数の処理を、1つの処理単位として扱う仕組みです。
基本的な流れは次のようになります。
トランザクション開始
処理1
処理2
処理3
成功したらコミット
失敗したらロールバック
代表的な用語は、次の3つです。
| 用語 | 意味 |
|---|---|
| トランザクション | ひとまとまりとして扱う処理の単位 |
| コミット | 処理結果を確定する操作 |
| ロールバック | 処理を取り消し、処理前の状態へ戻す操作 |
例えば、ネットショップの注文処理では、次のような更新が1つのトランザクションになることがあります。
在庫数を減らす
注文履歴を追加する
請求情報を登録する
どれか1つだけ成功して、ほかが失敗すると、データのつじつまが合わなくなります。
そのため、すべて成功したらコミットし、途中で失敗したらロールバックします。
また、トランザクションを安全に扱うための性質として ACID特性 があります。
| ACID特性 | 意味 |
|---|---|
| 原子性 | 全部実行するか、全く実行しない |
| 一貫性 | データの矛盾を残さない |
| 独立性 | 同時実行しても互いに影響しない |
| 耐久性 | 確定した結果が失われない |
トランザクションは、コミット、ロールバック、ACID特性とセットで理解すると整理しやすくなります。
このテーマは、基本情報技術者試験の「データベース」と関係する内容です。公式の出題範囲やシラバスは、IPA:基本情報技術者試験 から確認できます。
科目Aでどう出る?
科目Aでは、トランザクションの意味や、コミット・ロールバック・ACID特性との関係が問われやすいです。
次の表で切り分けると判断しやすくなります。
| 問題文の表現 | 関係する用語 |
|---|---|
| 一連の処理をひとまとまりとして扱う | トランザクション |
| 処理結果を確定する | コミット |
| 処理を取り消して処理前に戻す | ロールバック |
| 完全に行うか、全く行わない | 原子性 |
| データの矛盾を残さない | 一貫性 |
| 同時実行しても結果が乱れない | 独立性 |
| 確定後の結果が失われない | 耐久性 |
特に、トランザクションの問題では、次の表現に注意します。
ひとまとまり
中途半端に残さない
すべて実行するか、すべて取り消す
コミット
ロールバック
これらが出てきたら、トランザクション処理を意識します。
どんな場面で使う?
問題文では、トランザクションという用語を選ぶだけでなく、処理の流れを読ませる形で出ることがあります。
見るポイントは、次の3つです。
1. どこからどこまでが1つの処理単位か
2. どの時点でコミットされるか
3. 失敗したときにどこまでロールバックされるか
例えば、次のような処理を考えます。
トランザクション開始
在庫数を減らす
注文履歴を追加する
請求情報を登録する
コミット
この場合、コミットまで到達すれば、3つの更新が確定します。
もし、請求情報の登録で失敗した場合は、在庫数の更新や注文履歴の追加も取り消す必要があります。
在庫数を減らす
注文履歴を追加する
請求情報で失敗
→ ロールバック
→ 在庫数も注文履歴も処理前へ戻す
問題文では、処理を1行ずつ追うだけでなく、 どこまでが1つのトランザクションか を見ることが大切です。
トランザクションの範囲を見落とすと、どの更新が確定し、どの更新が取り消されるのかを間違えやすくなります。
よくある誤解・混同
誤解1:1つのSQL文だけがトランザクションだと思う
トランザクションは、必ずしも1つのSQL文だけとは限りません。
複数の更新処理をまとめて、1つのトランザクションとして扱うことがあります。
在庫を更新する
注文を登録する
請求を登録する
このように、業務上まとめて成功・失敗を判断したい処理が、トランザクションになります。
誤解2:処理が始まったら必ず確定すると考える
トランザクション中の処理は、コミットされるまでは確定とは限りません。
途中でエラーが起きれば、ロールバックで取り消されることがあります。
処理した
でも、まだコミットしていない
→ 確定とは限らない
試験では、コミットされたかどうかを確認します。
誤解3:ロールバックは最後の処理だけを取り消すと思う
ロールバックは、基本的に対象のトランザクションを処理前の状態に戻す操作です。
最後の1処理だけを取り消すというより、トランザクション全体を戻すイメージです。
処理A
処理B
処理Cで失敗
ロールバック
→ 処理A、処理Bも含めて取り消す
この考え方は、ACID特性の 原子性 と関係します。
誤解4:トランザクションとACID特性を別々に覚える
トランザクションとACID特性は、別々に丸暗記するより、セットで理解した方が安全です。
| 観点 | 何を見る? |
|---|---|
| トランザクション | どこからどこまでが1つの処理か |
| コミット | どこで確定するか |
| ロールバック | 失敗時にどこまで戻るか |
| ACID特性 | その処理が安全に扱われているか |
トランザクションが処理の単位で、ACID特性はその処理を安全に行うための性質です。
まとめ(試験直前用)
- トランザクションは、一連の処理をひとまとまりで扱う単位
- 全部成功したらコミットして確定する
- 途中で失敗したらロールバックして処理前に戻す
- 中途半端な更新を残さないことが重要
- ACID特性、コミット、ロールバックとセットで覚える