基本情報技術者OS・データベースの実践オリジナル・公式資料照合難易度★★☆☆☆
同じDB内で口座Aを1000円減らし、口座Bを1000円増やす送金を行う。Bの更新で障害が起きたとき、Aの減額も含めて取り消すための基本設計はどれか。
A
Aの更新だけ先にCOMMITする
先にAだけ確定するとBの失敗時に片方だけ反映された状態が残り、原子性を保てません。
B
二つの更新を一つのトランザクションにし、失敗時にROLLBACKする★ 正解
両更新を同一トランザクションにまとめ、両方成功ならCOMMIT、失敗ならROLLBACKして原子性を保ちます。
C
更新前に画面の文字色を変える
表示上の変更はデータベースの確定・取消しを制御しません。
D
Aの更新結果をログに書けばBの更新は不要とする
ログの記録だけではBの残高は増えません。送金処理の整合性は保てません。
解説
トランザクションの原子性は「全体を反映するか、全体を取り消すか」です。独立した二つのCOMMITでは片側更新を防げません。
根拠資料・確認情報
対応範囲:2026年度 基本情報技術者試験 科目A・B
資料確認日:2026-10-28
同じレッスンの問題
問題 1
プロセスP,Qが時刻0にこの順で実行可能となる。必要CPU時間はPが5ms、Qが3msで、I/O待ちはない。タイムクウォンタム2msのラウンドロビン方式を使い、切替時間を無視する。Qが終了する時刻はどれか。
問題 2
主記憶に2ページ分の枠があり、初めは空である。ページ参照列1,2,1,3,1に対し、LRU(最も長く参照されていないページを置換)を使う。初回読込みもページフォールトに数えると、総回数はどれか。
問題 3
売上表salesには(部門,金額)として(A,100),(A,200),(B,50),(B,80)だけがある。次のSQLの結果として正しいものはどれか。
SELECT department, SUM(amount)
FROM sales
GROUP BY department
HAVING SUM(amount) >= 150;
列departmentは部門、amountは金額である。