DML文による表の操作複数選択31 / 50 問

トランザクションを終了する条件はどれですか。

ACOMMIT✓
BEXIT✓
CROLLBACK(SAVEPOINT句なし)✓
DCREATE✓
EROLLBACK(SAVEPOINT句あり)
正解:A・B・C・D解説

トランザクションが終了する条件は次のとおりです:

  1. COMMIT文が正常に実行された場合
  2. ROLLBACK文(SAVEPOINT句なし)が正常に実行された場合
  3. EXIT文が正常に実行された場合(セッション終了に伴う暗黙的なコミット)
  4. DDL(CREATE/DROP/ALTER等)が実行された場合(暗黙的なコミットを伴う)
  5. DCL(GRANT/REVOKE)が実行された場合
  6. クライアントから切断された場合/障害が発生した場合

SAVEPOINT句ありのROLLBACKは、トランザクションが終了しない
ROLLBACK TO SAVEPOINT sp1は、指定したセーブポイントまでの変更を取り消すだけで、トランザクション自体は継続します。
例

INSERT INTO emp VALUES (1, '田中');
SAVEPOINT sp1;
INSERT INTO emp VALUES (2, '鈴木');

ROLLBACK TO SAVEPOINT sp1;  -- 鈴木のINSERTのみ取り消し、トランザクションは継続中
-- ここでまだ田中のINSERTは確定していない

COMMIT;  -- ここでトランザクション終了、田中のINSERTが確定

前後の問題