Bonjour,
j'aimerais quelques explications sur les rollbacks implicites envoyés par le raise_application_error.
J'ai d'abord remarqué que si, à l'intérieur d'une procédure le troisième ordre d'une màj (insert ou update ou delete) déclenchait une exception, il y avait un rollback implicite qui de fait, annulait les deux premiers ordres de màj.
Ma question: ai-je tout bien compris ?
En suite, j'ai écrit une procédure qui réalise deux insert dans une table sur laquelle existe un trigger before insert. J'ai fait en sorte que le trigger déclenche une exception sur le deuxième appel. Il se termine bien par un raise_application_error, l'erreur est remontée à la procédure appelante qui se déroute sur le bloc exception. J'ai juste fait un dbms_output.put_line, de sorte que la procédure se termine normalement. A ma grande surprise, je vois que le premier ordre inser n'a pas été impacté par le raise_application_error du trigger.
Ma question est : est-ce que le trigger s'exécute dans une transaction autonome ?
Merci pour vos réponses, je n'ai pas trouvé grand chose là dessus.
Partager