Oracle事务的隐式提交

2014-11-24 17:40:57 · 作者: · 浏览: 0

隐式提交的定义


又名自动提交,即无需显示执行commit语句,session中的操作被自动提交到数据库的过程。


隐式提交的方式


1、正常执行完ddl语句。包括create,alter,drop,truncate,rename。


2、正常执行完dcl语句。包括grant,revoke。


3、正常退出isql*plus,没有明确发出commit或者rollback。


隐式提交的注意事项


1、执行ddl语句时,前面的dml操作也会被提交到数据库


因为是在一个session里,那执行ddl语句的时候前面的dml语句肯定也会“不可幸免”的被提交到库中。


2、即使ddl语句执行失败,前面的dml操作也会被提交到数据库中


这就有点儿让人奇怪了,ddl都执行失败了,怎么还会提交呢?这就需要探究一下隐式提交的本质了(下文有叙述)。


3、在前面1和2的基础上总结


为了避免隐式提交或者回滚,尽量保证一条或者几条DML操作完成后有显示的提交或者回滚,防止后续执行的DCL或者DDL自动提交前期的DML操作。


隐式提交的本质


1、一条ddl语句执行了两次commit


commit;


ddl statement;


commit;


第一个commit将当前session中未提交的事务隐式提交,以保证ddl语句失败时的回滚位置。


第二个commit将ddl


2、为什么需要隐式提交?


相关阅读