はじめに
Oracleには自動コミットという機能があり、明示的にcommit命令を発行しなくても変更を確定してくれる機能があります。
この自動コミットはデフォルトOFFなのですが、SQL*Plusでは自動コミットの設定にかかわらずコミットされるケースがあるため、注意が必要です。
コミットメントを引き出すマネジメント―社員を本気にさせる7つの法則
posted with amazlet at 13.08.26
野田 稔
PHP研究所
売り上げランキング: 242,427
PHP研究所
売り上げランキング: 242,427
自動コミットOFFでもコミットされる
Oracleの自動コミットはデフォルトでOFFなのですが、SQL*Plusは正常終了するとコミットされます。
自動コミット機能は、SQL*PlusのAUTOCOMMITシステム変数で指定します。AUTOCOMMITの設定にかかわらず、変更はSQL*Plusが正常に終了するとコミットされます。
SQL*Plusの基本
要するに、
- SQL*Plusでupdate文を実行し、commitなしにexitするとコミット
- SQL*Plusでupdate文を実行し、commitなしに×ボタンで閉じるとロールバック
×ボタンで閉じるのはSQL*Plusにとって正常終了ではないみたいです。
Oracleの自動コミット設定を確認する
Oracleの自動コミット設定を確認するには、以下のコマンドを実行します。
show autocommit;
autocommit OFFと表示された場合は、自動コミット機能がOFFになっています。commit命令を発行するまでは変更が確定されず、ロールバックされます。
Oracleの自動コミット設定を変更する
自動コミット設定をONにするには、以下のコマンドを実行します。
SET AUTOCOMMIT ON