Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie unterscheidet sich „ROLLBACK“ im Oracle-Ausnahmehandler von meinem „ROLLBACK“?

So funktioniert Oracle. Ihr erster INSERT wurde korrekt durchgeführt (d. h. "1" in eine Tabelle eingefügt).

Dann haben Sie einen anonymen PL/SQL-Block ausgeführt, der "3" und dann "2" einfügt und beim Versuch, "1" einzufügen, aufgrund einer Verletzung des Primärschlüssels fehlschlägt.

Wenn während der Ausführung dieses PL/SQL-Blocks eine nicht behandelte Ausnahme auftritt (was Sie sagen, dass „Oracle Exception Handler hierher zurückrollt“), springt Oracle zum Anfang des PL/SQL-Blocks zurück.

Wenn Sie den EXCEPTION-Handler verwenden und ROLLBACK ausgeben, dann entscheiden SIE, was zu tun ist, wenn etwas passiert, und zwar alle Änderungen auf das vorherige COMMIT zurückzusetzen, das ein implizites COMMIT nach dem Ausführen der CREATE TABLE-Anweisung war, also nach INSERT "1 " wird ebenfalls zurückgesetzt.