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