戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

ITパスポート 2018年 秋期 63


問題文

トランザクション処理におけるロールバックの説明として、適切なものはどれか。

選択肢

あるトランザクションが共有データを更新しようとしたとき、そのデータに対する他のトランザクションからの更新を禁止すること
トランザクションが正常に処理されたときに、データベースへの更新を確定させること
何らかの理由で、トランザクションが正常に処理されなかったときに、データベースをトランザクション開始前の状態にすること(正解)
複数の表を、互いに関係付ける列をキーとして、一つの表にすること

🔒 解説は解答すると表示されます

トランザクション処理におけるロールバックの説明【ITパスポート 解説】

正解の理由

選択肢は「何らかの理由で、トランザクションが正常に処理されなかったときに、データベースをトランザクション開始前の状態にすること」と説明しています。
ここでのポイントは「元に戻す(取り消す)」という動作です。これがロールバック(rollback)です。トランザクションとは「一連の処理のまとまり」で、途中で失敗したときに途中状態を残さず、開始前の状態に戻す性質(原子性:Atomicity)を守るためにロールバックが使われます。銀行の振替処理で片方の口座から引き落としが成功して、もう片方の口座への入金で失敗した場合、両方を元に戻すことで不整合を防ぎます。これがロールバックの典型的な使い方です。

解法ステップ

  1. 問題文のキーワードを探す:「正常に処理されなかった」「開始前の状態にする」→ これは「元に戻す」動作を示す。
  2. 選択肢の意味を割り当てる:
    • ロールバックは「取り消す(戻す)」→ 該当する選択肢を探す。
    • 「確定させる」はコミット(commit)。
    • 「他のトランザクションからの更新を禁止する」は排他制御(ロック)。
    • 「複数の表を一つにする」は結合(JOIN)。
  3. 該当するものを選ぶ:上記の手順で「開始前に戻す」という説明がある選択肢が正しい()。
短い目印:
  • 「確定・永続」はコミット(commit)→ イに対応。
  • 「戻す・取り消す・開始前に戻す」はロールバック→
  • 「禁止・ロック」は排他制御→ ア。
  • 「表を一つにする」は結合(JOIN)→ エ。

選択肢別の誤答解説

  • ア: 「あるトランザクションが共有データを更新しようとしたとき、そのデータに対する他のトランザクションからの更新を禁止すること」
    → これは排他制御(ロック、例:排他ロック)の説明です。ロールバックではなく、同時更新を防いで整合性を保つ仕組みを指します。
  • イ: 「トランザクションが正常に処理されたときに、データベースへの更新を確定させること」
    → これはコミット(commit:確定)です。成功した変更を確定して永続化する操作で、ロールバックの逆の動作です。
  • : 「何らかの理由で、トランザクションが正常に処理されなかったときに、データベースをトランザクション開始前の状態にすること」
    → これがロールバック(rollback)の正しい説明です。失敗時に変更を取り消して不整合を防ぎます。
  • エ: 「複数の表を、互いに関係付ける列をキーとして、一つの表にすること」
    → これは表の結合(JOIN)の説明です。SQLの操作であり、ロールバックとは無関係です。

よくある誤解

  1. 「ロールバックは部分的に戻せる」と思う誤解
    • 基本のトランザクションでは「全て戻すか全て反映するか(全部か無か)」が原則です(原子性)。ただし、途中まで戻す機能としてセーブポイント(SAVEPOINT)がある点は別扱いです。
  2. 「ロールバックすると変更が残る(永続化される)」と思う誤解
    • ロールバックは変更を取り消す操作です。コミットして永続化された後は通常ロールバックできません(バックアップやリカバリが必要)。
  3. 「ロールバック = ロック(排他制御)」と混同する誤解
    • ロールバックは取り消し、ロックは同時実行制御です。目的と動作が異なります。

補足コラム

  • ACID(エーシッド)とは:トランザクションの4つの性質を示す頭字語です。
    • Atomicity(原子性):処理は全体が成功するか全体を取り消すか。
    • Consistency(整合性):データは一貫した状態を保つ。
    • Isolation(独立性):並行実行が互いに影響しない。
    • Durability(永続性):コミットされた変更は永続的に保存される。
  • SQL(Structured Query Language:構造化問合せ言語)での基本操作例:
    BEGIN TRANSACTION;   -- トランザクション開始
    UPDATE account SET balance = balance - 100 WHERE id = 1;  -- 引き落とし
    UPDATE account SET balance = balance + 100 WHERE id = 2;  -- 入金
    -- 途中でエラーがあれば
    ROLLBACK;           -- 変更を取り消す(ロールバック)
    -- 全て問題なければ
    COMMIT;             -- 変更を確定する(コミット)
    
  • セーブポイント(SAVEPOINT):長いトランザクションで一部分だけ戻したいときに使える機能。セーブポイントを作っておくと、その点までロールバックできます(部分的ロールバック)。

FAQ

Q1. ロールバックはいつ使うのですか?
A1. トランザクションの処理中にエラーや異常が発生したときに使います。処理の一部だけ反映されてデータ不整合が起きるのを防ぐためです。
Q2. コミットした後にロールバックできますか?
A2. 通常はできません。コミットで変更が永続化されるため、元に戻すには別の手段(バックアップ復元や補償処理)が必要です。
Q3. ロールバックは自動で実行されますか?
A3. 多くのシステムではエラー検出時に自動でロールバックする設定がありますが、アプリケーション側で明示的にROLLBACKを呼ぶこともあります。

関連キーワード: トランザクション、ロールバック、コミット、排他制御(ロック)、結合(JOIN)、ACID、整合性、セーブポイント、SQL、トランザクション分離レベル
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

ITパスポート
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について