這篇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”標識的已損壞或疑問事務。
