更新の確定 「COMMIT」
「COMMIT」コマンドは、現行のトランザクションで行った変更をすべて確定させることができます。
OracleのDML(INSERT・UPDATE・DELETE)での更新は、コミットを自分で切らないと更新の反映がされません。
DDLは、設定値にもよりますがデフォルトが自動コミットなのでDDL文を発行した後、自動コミットされます。
「COMMIT」の構文
COMMIT;
「COMMIT」の実行例
それでは、「COMMIT」の発行を見ていきましょう。
SQL> SELECT count(*) FROM animal1; COUNT(*) ---------- 4 SQL> DELETE FROM animal1; 4行が削除されました。 SQL> SELECT count(*) FROM animal1; COUNT(*) ---------- 0
あれ?コミットしていないのに変更されているようにみえますね\(^o^)/
別セッション(もう一個SQL*Plusを立ち上げる)でSELECTを発行してみましょう。
SQL> --別セッションで実行 SQL> SELECT count(*) FROM animal1; COUNT(*) ---------- 4
別セッションからみるとまだデータの削除が確定していないことがわかります。
「DELETE」文を発行したセッションに戻って「COMMIT」を発行してみましょう。
SQL> COMMIT; コミットが完了しました。 SQL> SELECT count(*) FROM animal1; COUNT(*) ---------- 0
コミットを発行した後に別セッションに戻ってデータの削除が確定されているか確認してみると、ちゃんとデータが確定しているのがわかりますね\(^o^)/
SQL> --別セッションで実行 SQL> SELECT count(*) FROM animal1; COUNT(*) ---------- 0
更新の取り消し 「ROLLBACK」
「ROLLBACK」コマンドは、現行のトランザクションで行った変更をすべて取り消すことができます。
「ROLLBACK」の構文
ROLLBACK;
「ROLLBACK」の実行例
SQL> delete from animal1; 4行が削除されました。 SQL> ROLLBACK; ロールバックが完了しました。
コメント