Oracle, wann autonome Transaktion

BLR

Erfahrenes Mitglied
Hallo :)
Ich habe eine Frage zu dem folgenden Ausdruck in PL/SQL:

SQL:
PRAGMA AUTONOMOUS_TRANSACTION;

So wie ich das verstehe, gibt es allgemein in Oracle Transaktionshierarchie.
Schon wenn ich mit dem SQL-Developer mich anmelde, und die Tabelleninahlte ändere (direkt in der GUI) so habe ich eine Transaktion.
Diese nenne ich mal TransaktionA

Dann führe ich eine Prozedure aus, die ebenfalls eine Transaktion darstellt (Insert, Update).
Diese nenne ich TransaktionB.

Folgender Situation:
Ich bestätige TransaktionB mit "commit", und somit alle Änderungen, von der TransaktionA implizit mit, weil TransaktionA eine Hierarchie höher liegt und TransaktionB von ihr abhängt.
Wenn nun in der TransaktionA eine fehlerhafte Eingabe passiert und TransaktionB diese implizit commitet, ist das ja unschön.

Deswegen würde ich TransaktionB als AUTONOMOUS_TRANSACTION markieren, damit diese implizite Bestätigung nicht stattfindet.

Meine Frage ist, dass man eigentlich jede Transaktion so definieren sollte, damit alle Transaktionen unabhängig sind und nur sich selbst commiten können und zwar wenn die jeweilige Transaktion korrekt ist.

Wäre das richtig oder wann ist das unangebracht.
Danke für die Antworten.
 

Neue Beiträge

Zurück