The AUTONOMOUS_TRANSACTION pragma marks a routine as autonomous; that is, independent of the main transaction.
In this context, a routine is one of the following:
* Top-level (not nested) anonymous PL/SQL block
* Standalone, packaged, or nested subprogram
* Method of a SQL object type
* Database trigger
When an autonomous routine is invoked, the main transaction is suspended. The autonomous transaction is fully independent of the main transaction: they share no locks, resources, or commit dependencies. The autonomous transaction does not affect the main transaction.
Changes made by an autonomous transaction become visible to other transactions when the autonomous transaction commits. They become visible to the main transaction when it resumes only if its isolation level is READ COMMITTED (the default).
source : oracle.com