通常我们执行sql或pl/sql时,需要我们手工提交。这样才能使所做的更改永久保存到数据库。
但有时即使我们没有在sql或pl/sql中发出commit命令,所做的更改也会被提交。这种提交是在某些特定的情况下oracle自动发生的,通常包括以下一些情况(不是很全,只是自己知道的其中几种,欢迎大家补充):
- DDL语句(像如:create table...)被执行;
- DCL语句(像如:grant、revoke..)被执行;
- 用户从DB中disconnect;
- sqlplus中使用exit命令;
- DML语句失败,执行rollback;
- SET AUTOCOMMIT ON时,每一条sql都会被自动commit;