這篇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 - 可選的。 它用於指定將已提交事務的重做信息寫入重做日志的優先級。 用這個子句,有兩個參數可以指定:
- WAIT 或 NOWAIT (如果省略,
WAIT
是默認值) - IMMEDIATE或BATCH(
IMMEDIATE
是省略時的默認值)
- WAIT 或 NOWAIT (如果省略,
- FORCE clause - 可選的。 它用於強制提交可能已損壞或有疑問的事務。 有了這個子句,可以用3種方式指定FORCE:
FORCE'string',[integer]
或FORCE CORRUPT_XID'string'
或FORCE CORRUPT_XID_ALL
注意
- 必須擁有DBA權限才能訪問系統視圖 -
DBA_2PC_PENDING
和V$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”標識的已損壞或疑問事務。