ハンバーガーメニュー

Menu

← Quiz 一覧に戻る

PostgreSQL: Transactions

記事で説明されているトランザクションの「all-or-nothing(すべてか無か)」という性質について、銀行の送金の例を踏まえながら、どのような問題を防ぎ、どのような保証を与えるのかを説明してください。

🟢 基本⭐ Familiar1回出題済み記事を読む →

模範解答

トランザクションの all-or-nothing 性質は、複数の更新処理が1つのまとまりとして完全に成功するか、あるいはまったく行われなかったことにするかのどちらかしか起きないようにする性質です。銀行の例では、Alice からの引き落としと Bob への入金、および関連する支店の残高更新がすべて同時に成功するか、障害が起きた場合には一切反映されないことを保証し、片方だけ更新されて不整合な状態になる問題を防ぎます。

🔑 トランザクションの原子性が、複数の更新を不可分な1単位にまとめ、不整合や中途半端な状態を防ぐという本質を理解しているかを問う。


回答履歴 (1回)

#1   2026.03.14正解 (4/5)

あなたの回答

送金側の処理のみが成功して受け取り側が失敗するなど、一連の処理の一部のみが成功することによる状態の不整合が発生しない様にするために、トランザクション内の一部でも失敗したものがあれば全体をロールバックする。 これによって不整合が起こる前の状態に戻し、整合性のある状態を保証できる

フィードバック

ユーザー回答は、送金処理の一部のみ成功して不整合が生じる問題を防ぐ点を正しく説明しており、「一部でも失敗したら全体をロールバックする」という all-or-nothing の性質を適切に述べています。ただし、「複数の更新処理を1つのまとまりとして扱う」という観点がやや暗黙的であり、その点を明示できると模範解答により近づきます。全体として、トランザクションの原子性と整合性保証の理解は概ね良好です。