這篇Oracle教程解釋了如何在Oracle中使用ROLLBACK
語句的語法和示例。
在Oracle中,ROLLBACK
語句用於撤銷當前事務或有問題的事務所執行的工作。
語法ROLLBACK
語句的語法是:
ROLLBACK [ WORK ] [ TO [SAVEPOINT] savepoint_name | FORCE 'string' ];
參數
- WORK - 可選的。 它被Oracle添加為符合SQL標准。 使用或不使用
WORK
參數來發出ROLLBACK
會導致相同的結果。 - TO SAVEPOINT savepoint_name - 可選的。
ROLLBACK
語句撤消當前會話的所有更改,直到由savepoint_name
指定的保存點。 如果省略該子句,則所有更改都將被撤消。 - FORCE ‘string’ - 可選的。它用於強制回滾可能已損壞或有問題的事務。 使用此子句,可以將單引號中的事務ID指定為字符串。 可以在系統視圖中找到名為
DBA_2PC_PENDING
的事務標識。 - 必須擁有DBA權限才能訪問系統視圖 -
DBA_2PC_PENDING
和V$CORRUPT_XID_LIST
。 - 您無法將有問題的事務回滾到保存點。
示例
我們來看一個示例,演示如何使用ROLLBACK
語句在Oracle中發出回滾。
例如:
ROLLBACK;
此ROLLBACK
示例執行與以下操作相同:
ROLLBACK WORK;
在這個例子中,隱含了WORK
關鍵字,所以前面2
個ROLLBACK
語句是等價的。 這些示例將回滾當前事務。
Savepoint
我們來看一個ROLLBACK
的例子,它演示了如何使用回滾到指定的保存點。
例如,可以通過兩種方式將ROLLBACK
寫入保存點:
ROLLBACK TO SAVEPOINT savepoint1;
或者 -
ROLLBACK WORK TO SAVEPOINT savepoint1;
由於始終隱含着WORK
關鍵字,因此這兩個ROLLBACK
示例都會將當前事務回滾到名為savepoint1
的保存點。
Force
最后,看看ROLLBACK
的一個例子,它顯示了如何強制回滾一個有問題的事務。
例如,您可以通過兩種方式編寫有問題事務的ROLLBACK
:
ROLLBACK FORCE '22.14.67';
或者 -
ROLLBACK WORK FORCE '22.14.67';
由於始終隱含着WORK
關鍵字,因此這兩個ROLLBACK
示例都將強制回滾由事務 ID “22.14.67”標識的損壞或有問題的事務。