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 - 可选的。 它用于指定将已提交事务的重做信息写入重做日志的优先级。 用这个子句,有两个参数可以指定:
- 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”标识的已损坏或疑问事务。