倒回交易
倒回交易會還原其變更。您可以倒回目前的整個交易,或者僅倒回至指定儲存點。
如果只要將目前的交易倒回指定的儲存點,請使用具備 TO SAVEPOINT 子句的 ROLLBACK 敘述句。
若要倒回整個目前交易,請使用 ROLLBACK 敘述句 (不含 TO SAVEPOINT 子句),或 (在 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 敘述句的相關資訊