テーブルにレコードを挿入するなどの変更を行っても、その変更はまだ確定されていません。変更を取り消す(元の状態に戻す)ことを「ロールバック」と言います。ロールバックを行うには、SQL文の「ROLLBACK」を使用します。
ロールバックできるのは、DML (Data manipulation language) 文による操作だけです。DML文とは、次のSQLです。
DDL (Data Definition Language) 文は実行すると即座にコミットされるので、ロールバックできない。具体的には、以下に示す SQL 文が DDL に相当する。
ROLLBACK [TO savepoint]
セーブポイントを指定してロールバックする例を以下に示す。
SQL> SAVEPOINT sp1;
SQL> INSERT INTO emp VALUES(5389, '井上和');
SQL> SAVEPOINT sp2;
SQL> INSERT INTO emp VALUES(5396, '五百城茉央');
SQL> ROLLBACK TO sp2;
SQL> COMMIT;
上記の SQL の場合、五百城茉央のデータはロールバックされて、井上和のデータのみコミットされる。
SQL> rollback
ロールバックが完了しました。
SQL>
Transaction Control