Oracle回滾事務(ROLLBACK語句)


這篇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_PENDINGV$CORRUPT_XID_LIST
  • 您無法將有問題的事務回滾到保存點。

示例

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

例如:

ROLLBACK;

ROLLBACK示例執行與以下操作相同:

ROLLBACK WORK;

在這個例子中,隱含了WORK關鍵字,所以前面2ROLLBACK語句是等價的。 這些示例將回滾當前事務。

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”標識的損壞或有問題的事務。



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM