On sait qu'une des règles fondamentales d'un SGBD est d'apporter
une cohérence complète lors de transactions (atomicité de la
transaction) ; cependant, il arrive que certaines transactions doivent
être exécutées indépendamment de celle qui l'appelle. C'est ce qu'on
nomme les transactions autonomes.
Oracle a mis en place un mécanisme permettant cette exception : la clause PRAGMA AUTONOMOUS_TRANSACTION. Cette clause se place à la déclaration de la procédure / fonction / trigger et précise ainsi que celle-ci sera autonome.
Ainsi, le commit et le rollback à l'intérieur de la transaction autonome n'auront aucun effet sur les procédures appelantes.
La meilleure façon de comprendre les transactions autonomes est de les voir en action (exemple détaillé). Pour ce faire,on va créer une table TEST et de la remplir avec deux rangées sans faire le commit;
SQL> insert into test values (1,' Ceci est un test numéro 1 ');
1 row inserted
SQL> insert into test values (2,' Ceci est un test numéro 2 ');
1 row inserted
Oracle a mis en place un mécanisme permettant cette exception : la clause PRAGMA AUTONOMOUS_TRANSACTION. Cette clause se place à la déclaration de la procédure / fonction / trigger et précise ainsi que celle-ci sera autonome.
Ainsi, le commit et le rollback à l'intérieur de la transaction autonome n'auront aucun effet sur les procédures appelantes.
La meilleure façon de comprendre les transactions autonomes est de les voir en action (exemple détaillé). Pour ce faire,on va créer une table TEST et de la remplir avec deux rangées sans faire le commit;
SQL> insert into test values (1,' Ceci est un test numéro 1 ');
1 row inserted
SQL> insert into test values (2,' Ceci est un test numéro 2 ');
1 row inserted