Oracle提交事務(COMMIT語句)


這篇Oracle教程解釋了如何使用Oracle COMMIT語句的語法和示例。
在Oracle中,COMMIT語句提交當前事務的所有更改。發出提交后,其他用戶將能夠看到您的更改。

語句

Oracle / PLSQL中COMMIT語句的語法是:

COMMIT [ WORK ] [ COMMENT clause ] [ WRITE clause ] [ FORCE clause ];

參數

  • WORK - 可選的。它被Oracle添加為符合SQL標准。使用或不使用WORK參數來執行COMMIT將產生相同的結果。
  • COMMENT clause - 可選的。 它用於指定與當前事務關聯的注釋。 該注釋最多可以包含在單引號中的255個字節的文本中。 如果出現問題,它將與事務ID一起存儲在名為DBA_2PC_PENDING的系統視圖中。
  • WRITE clause - 可選的。 它用於指定將已提交事務的重做信息寫入重做日志的優先級。 用這個子句,有兩個參數可以指定:
    • WAITNOWAIT (如果省略,WAIT是默認值)
    • IMMEDIATEBATCH(IMMEDIATE是省略時的默認值)
  • FORCE clause - 可選的。 它用於強制提交可能已損壞或有疑問的事務。 有了這個子句,可以用3種方式指定FORCE:
    • FORCE'string',[integer]FORCE CORRUPT_XID'string'FORCE CORRUPT_XID_ALL

注意

  • 必須擁有DBA權限才能訪問系統視圖 - DBA_2PC_PENDINGV$CORRUPT_XID_LIST
  • 必須擁有DBA權限才能指定COMMIT語句的某些功能。

示例

我們來看一個示例,演示如何使用COMMIT語句在Oracle中發出提交。

例如:

COMMIT;

COMMIT示例將執行與以下相同的操作:

COMMIT WORK WRITE WAIT IMMEDIATE;

在此示例中,隱含了WORK關鍵字,並且省略WRITE子句將缺省為WRITE WAIT IMMEDIATE,因此它與前面的COMMIT語句是等效的。

添加備注

我們來看一個顯示如何使用COMMENT子句的COMMIT示例:

例如,您可以通過兩種方式使用注釋編寫COMMIT

COMMIT COMMENT 'This is the comment for the transaction';

或者 -

COMMIT WORK COMMENT 'This is the comment for the transaction';

由於始終隱含WORK關鍵字,因此這兩個COMMIT示例都是等效的。 如果事務出錯或存在疑問,COMMIT會將包含在引號中的注釋與事務ID一起存儲在DBA_2PC_PENDING系統視圖中。

強制
最后,看一下顯示如何使用FORCE子句的COMMIT示例。

例如,可以通過兩種方式編寫可疑事務的COMMIT

COMMIT FORCE '22.14.67';

或者 -

COMMIT WORK FORCE '22.14.67';

由於始終隱含WORK關鍵字,因此這兩個COMMIT示例都會強制執行由事務ID “22.14.67”標識的已損壞或疑問事務。



免責聲明!

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



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