メインコンテンツへ
データベース

トランザクション処理の説明として正しいものはどれか。BEGIN → INSERT(A実行) → SAVEPOINT sp1 → UPDATE(B実行) → ROLLBACK TO sp1 → COMMIT を行った場合の結果はどれか。

ア.INSERTもUPDATEも両方確定される
イ.INSERTもUPDATEも両方取り消される
ウ.UPDATEのみ確定され、INSERTは取り消される
エ.INSERTのみ確定され、UPDATEは取り消される正解

解説

SAVEPOINTは「チェックポイント機能」。ROLLBACK TO SAVEPOINTは過去のチェックポイントに戻るが、チェックポイントより前の操作は維持される。

なぜ エ が正解か

BEGIN後にINSERT(A)を実行し、SAVEPOINT sp1を設定。その後UPDATE(B)を実行。ROLLBACK TO sp1によってsp1以降(UPDATE)の変更が取り消される。sp1以前のINSERT(A)は残る。最後のCOMMITでINSERT(A)が確定される。

なぜ ア は間違いか

両方確定は誤り。ROLLBACK TO sp1によりUPDATEは取り消されている。

なぜ イ は間違いか

両方取り消しはROLLBACK(SAVEPOINTなし)の場合。ROLLBACK TO sp1はsp1以前を保持する。

なぜ ウ は間違いか

UPDATEのみ確定は誤り。ROLLBACK TO sp1によってUPDATEは取り消される。

出典: AI生成問題(学習用)