Oracle ROLLBACK語句(回滾事務(wù))

2022-03-09 17:33 更新

在 Oracle 中,ROLLBACK 語句可以用來撤銷當(dāng)前事務(wù)或有問題的事務(wù)。本教程就將教大家如何使用 ROLLBACK 語句。 

ROLLBACK語法

ROLLBACK [ WORK ] [ TO [SAVEPOINT] savepoint_name  | FORCE 'string' ];

參數(shù)

  • ?WORK?:可選的。 它被 Oracle 添加為符合 SQL 標(biāo)準(zhǔn)。 使用或不使用 WORK 參數(shù)來發(fā)出 ROLLBACK 會導(dǎo)致相同的結(jié)果。
  • ?TO SAVEPOINT savepoint_name?:可選的。 ROLLBACK語句撤消當(dāng)前會話的所有更改,直到由 savepoint_name 指定的保存點。 如果省略該子句,則所有更改都將被撤消。
  • ?FORCE? ?‘string’:可選的。它用于強制回滾可能已損壞或有問題的事務(wù)。 使用此子句,可以將單引號中的事務(wù)ID指定為字符串。 可以在系統(tǒng)視圖中找到名為 DBA_2PC_PENDING 的事務(wù)標(biāo)識。
  • 必須擁有 DBA 權(quán)限才能訪問系統(tǒng)視圖:DBA_2PC_PENDING 和 V$CORRUPT_XID_LIST。
  • 您無法將有問題的事務(wù)回滾到保存點。

ROLLBACK語語法示例

我們來看一個示例,演示如何使用 ROLLBACK 語句在 Oracle 中發(fā)出回滾。

例如:

ROLLBACK;

此 ROLLBACK 示例執(zhí)行與以下操作相同:

ROLLBACK WORK;

在這個例子中,隱含了 WORK 關(guān)鍵字,所以前面2個 ROLLBACK 語句是等價的。 這些示例將回滾當(dāng)前事務(wù)。

Savepoint

可以通過兩種方式將 ROLLBACK 寫入保存點:

ROLLBACK TO SAVEPOINT savepoint1;

或者

ROLLBACK WORK TO SAVEPOINT savepoint1;

由于始終隱含著 WORK 關(guān)鍵字,因此這兩個 ROLLBACK 示例都會將當(dāng)前事務(wù)回滾到名為 savepoint1 的保存點。

Force

最后,看看 ROLLBACK 的一個例子,它顯示了如何強制回滾一個有問題的事務(wù)。

例如,您可以通過兩種方式編寫有問題事務(wù)的 ROLLBACK:

ROLLBACK FORCE '22.14.67';

或者

ROLLBACK WORK FORCE '22.14.67';

由于始終隱含著 WORK 關(guān)鍵字,因此這兩個 ROLLBACK 示例都將強制回滾由事務(wù) ID “22.14.67”標(biāo)識的損壞或有問題的事務(wù)。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號