回退事务处理

回退事务处理会撤消其更改。您可以回退当前整个事务处理,或仅将其回退到指定的保存点。

要将当前事务处理仅回退到指定的保存点,则必须使用包含 TO SAVEPOINT 子句的 ROLLBACK 语句。

要回退当前整个事务处理,请使用不包含 TO SAVEPOINT 子句的 ROLLBACK 语句,或(在 SQL Developer 环境中)使用回退更改图标。

回退整个当前事务处理会执行以下操作:

仅将当前事务处理回退到指定的保存点会执行以下操作:

要在 SQL Developer 中查看回退的效果,可能必须单击刷新图标。

作为示例 3-7 的结果,REGIONS 表包含一个称为“中东和非洲”的区域和一个称为“非”的区域。示例 3-8 会更正此问题(这是一个非常简单的事务处理)并检查更改,但接着回退事务处理,然后检查回退。

示例 3-8 回退整个事务处理

在事务处理之前:

SELECT * FROM REGIONS
ORDER BY REGION_ID;

结果:

REGION_ID REGION_NAME
---------- -------------------------
         1 Europe
         2 Americas
         3 Asia
         4 Middle East and Africa
         5 Africa

5 rows selected.

事务处理 (更改表):

UPDATE REGIONS
SET REGION_NAME = 'Middle East'
WHERE REGION_NAME = 'Middle East and Africa';

结果:

1 row updated.

检查更改:

SELECT * FROM REGIONS
ORDER BY REGION_ID;

结果:

REGION_ID REGION_NAME
---------- -------------------------
         1 Europe
         2 Americas
         3 Asia
         4 Middle East
         5 Africa

5 rows selected.

回退事务处理:

ROLLBACK;

结果:

Rollback complete.

检查回退:

SELECT * FROM REGIONS
ORDER BY REGION_ID;

结果:

REGION_ID REGION_NAME
---------- -------------------------
         1 Europe
         2 Americas
         3 Asia
         4 Middle East and Africa
         5 Africa

5 rows selected.

另请参阅:Oracle Database SQL Language Reference(了解有关 ROLLBACK 语句的信息)