SQL*Plus 暗黙のコミット


  SQL*Plusから表の複数のデータを更新しました。
  トランザクションがコミットされる場合を、(A)〜(E)の中からすべて選んで下さい。

  (A).SQL*PlusをQUITコマンドで終了した
  (B).DDL文を実行した
  (C).SQL*Plusが異常終了した
  (D).SQL*PlusをEXITコマンドで終了した
  (E).システム障害が発生した

 【解答】
  (A).(B).(D)

  暗黙のコミットについて

 ・commit文を実行して明示的にトランザクションをコミットする以外に、
  以下の場合、暗黙にトランザクションがコミットします。
  (1).DDL文を実行した場合
  (2).SQL*PlusをEXIT又はQUITコマンドで終了した場合

 ・以下の場合には、コミットではなく、ロールバックします。
  (1).SQL*Plusが異常終了した場合
  (2).システム障害が発生した場合

 <参考> SQL*Plusを終了する場合に、EXITコマンドではなく、ウィンドウ
 を閉じるで終了するとSQL*Plusの異常終了としてロールバックします。

 <参考> SQL*Plusでは、システム変数のAUTOCOMMITで、コミットタイミング
 を制御することができます。

 構文:SET AUTOCOMMIT { ON | OFF | IMMEDIATE | n }
 パラメータ:
  ON : 自動コミット機能をオンにします
  OFF : 自動コミット機能をオフにします(デフォルト)
  IMMEDIATE : ONと同じ
  n  : DMLの実行回数(1つのPL/SQLブロックは、1つのトランザクション)
 例:以下の場合、1つのDMLコマンドごとにコミットされ、ロールバックできません
  SET AUTOCOMMIT ON 


目次ページ...