An explicit commit is when you issue a COMMIT statement
SQL> create table t(x number);
Table created.
SQL> insert into t values(1);
1 row created.
SQL> commit;
Commit complete.
An implicit commit is when a commit is issued without your approval.
ex: AUTOCOMMIT (default is OFF)
SQL> set autoc on
SQL> insert into t values(1);
1 row created.
Commit complete.
ex: EXITCOMMIT (default is ON)
SQL> set autoc off exitc on
SQL> truncate table t;
Table truncated.
SQL> insert into t values(1);
1 row created.
SQL> disc
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> conn scott/tiger
Connected.
SQL> select * from t;
X
----------
1
before / after a successful DDL statement
SQL> truncate table t;
Table truncated.
SQL> insert into t values(1);
1 row created.
SQL> create index i on t(x);
Index created.
SQL> rollback;
Rollback complete.
SQL> select * from t;
X
----------
1
Before / after an unsuccessful DDL statement, sometimes :
SQL> truncate table t;
Table truncated.
SQL> insert into t values(1);
1 row created.
SQL> create index i on t(blabla);
create index i on t(blabla)
*
ERROR at line 1:
ORA-00904: "BLABLA": invalid identifier
SQL> rollback;
Rollback complete.
SQL> select * from t;
X
----------
1
But not always :
SQL> truncate table t;
Table truncated.
SQL> insert into t values(1);
1 row created.
SQL> create index i on t();
create index i on t()
*
ERROR at line 1:
ORA-00936: missing expression
SQL> rollback;
Rollback complete.
SQL> select * from t;
no rows selected
In the last case, no DDL was executed, but in the case before that, the DDL was executed and failed.
If you want to commit, use COMMIT