SQLのデータ操作言語(DML)コマンド(UPDATE、INSERTおよびDELETE)を使用して、データベース内に格納されている情報に対して行う変更を指定できます。これらのコマンドは、単独かPL/SQLブロック内で使用できます。それらの変更は、SQLのCOMMITコマンド、データ制御言語(DCL)またはデータ定義言語(DDL)コマンド(CREATE TABLEなど)を入力するか、自動コミット機能を使用するまで確定されません。SQL*Plusの自動コミット機能は、指定した数のSQL DMLトランザクションが成功した後に、保留中の変更をコミットします(SQL DMLトランザクションとは、UPDATE、INSERT、DELETEのいずれかのコマンドまたはPL/SQLブロックのことです)。
自動コミット機能は、SQL*PlusのAUTOCOMMITシステム変数で指定します。AUTOCOMMITの設定にかかわらず、変更はSQL*Plusが正常に終了するとコミットされます。
COMMIT COMPLETE
自動コミット機能をONにした場合は、データベースへの変更をロールバックできません。
SQLのDMLコマンドを、一定の回数(たとえば、10回)実行した後にデータベースへの変更をコミットする場合は、次のように入力します。
SET AUTOCOMMIT 10
SQL*Plusでは、SQLのDMLコマンドが実行されるたびにカウントされ、10コマンドごとに変更がコミットされます。
注意:
この機能では、ブロックに含まれているSQLコマンドの実際の数には関係なく、1つのPL/SQLブロックが1つのトランザクションとみなされます。
自動コミット機能を再度OFFにするには、次のコマンドを入力します。
SET AUTOCOMMIT OFF
AUTOCOMMITがOFFに設定されたことを確認するには、次の形式でSHOWコマンドを入力します。
SHOW AUTOCOMMIT
AUTOCOMMIT OFF
詳細は、「SET AUTO[COMMIT]{ON | OFF | IMM[EDIATE] | n}」を参照してください。
例4-5 自動コミット機能をONにする方法
自動コミット機能をONにするには、次のように入力します。
SET AUTOCOMMIT ON
次のように入力することもできます。
SET AUTOCOMMIT IMMEDIATE
AUTOCOMMITの設定を変更するまで、データベースへの変更を指定するSQLの各DMLコマンドからの変更は、SQL*Plusで自動的にコミットされます。SQL*Plusでは、自動コミットを実行するたびに次のメッセージが表示されます。