トランザクションのロールバック

トランザクションのロールバックでは変更は取り消されます。トランザクション全体をロールバックするか、指定したセーブポイントまでロールバックすることができます。

指定したセーブポイントまで現在のトランザクションをロールバックするには、TO SAVEPOINT句を使用するROLLBACK文を使用する必要があります。

現在のトランザクション全体をロールバックするには、TO SAVEPOINT句を指定せずにROLLBACK文を使用するか、または(SQL Developer環境で)「変更のロールバック」アイコンを使用します。

現在のトランザクション全体をロールバックすると、次の処理が実行されます。

現在のトランザクションの指定したセーブポイントまでのみのロールバック:

SQL Developerでのロールバックの影響を確認するには、「リフレッシュ」アイコンをクリックする必要がある場合があります。

例3-7の結果、REGIONS表には「Middle East and Africa」というリージョンと「Africa」という地域があります。例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.

関連項目: ROLLBACK文の詳細は、Oracle Database SQL言語リファレンスを参照してください。