Führt Raise_application_error ein Rollback durch?
Führt Raise_application_error ein Rollback durch?

Video: Führt Raise_application_error ein Rollback durch?

Video: Führt Raise_application_error ein Rollback durch?
Video: Andreas Wismann: “When Others Then What?” 2024, Dezember
Anonim

Innerhalb eines Auslösers a RAISE_APPLICATION_ERROR funktioniert nicht ausführen ROLLBACK , bricht es die aktuelle Operation ab, d. h. ein einzelnes UPDATE/INSERT/DELETE. EIN Rollback macht alle Änderungen innerhalb der aktuellen Transaktion (oder bis zu einem bestimmten Savepoint) rückgängig, das ist anders.

Was ist also Raise_application_error?

Beantworte die raise_application_error ist eigentlich eine von Oracle definierte Prozedur, die es dem Entwickler ermöglicht, eine Ausnahme auszulösen und der Prozedur eine Fehlernummer und eine Meldung zuzuordnen. Oracle bietet die raise_application_error Verfahren, mit dem Sie benutzerdefinierte Fehlernummern in Ihren Anwendungen erhöhen können.

Was passiert außerdem, wenn eine Rollback-Anweisung innerhalb eines Triggers ausgeführt wird? Wenn das Abzug feuert die aktuelle Transaktion noch nicht abgeschlossen ist. Wenn COMMIT eine Transaktion beendet, die es ihnen erlaubt in Auslösern würde die Arbeitseinheit brechen. Also Änderungen in einem Trigger ausgeführt werden von der besitzenden Transaktion festgeschrieben (oder zurückgesetzt), die die DML ausgegeben hat, die die Abzug.

Was ist davon der Unterschied zwischen Pragma Exception_init und Raise_application_error?

Pragma Ausnahme init verwandelt einen Oracle-Fehler in eine benannte Ausnahme. Wenn eine Datenbankoperation eine ORA-00054 "Ressource beschäftigt" auslöst, müssen Sie Folgendes codieren:. Raise_application_error wird verwendet, um einen Fehler auszulösen - Ausnahme_init wird verwendet, um mit Fehlern umzugehen (ich denke, man könnte sagen, sie sind Gegensätze in einem Weg).

Was ist Sqlerrm?

SQLERRM Funktion. Die Funktion SQLERRM gibt die dem Fehlernummernargument zugeordnete Fehlermeldung zurück. Wenn das Argument weggelassen wird, gibt es die Fehlermeldung zurück, die dem aktuellen Wert von SQLCODE zugeordnet ist. SQLERRM with no argument ist nur in einem Ausnahmehandler nützlich.

Empfohlen: