Analyse – Fehlerhafte Validierung von Constraints – EXCEPTIONS INTO
Tritt bei der Validierung eines Constraints unter ORACLE RDBMS ein Fehler aufgrund einer Constraintverletzung auf, kann mittels der EXCEPTIONS INTO Clause der fehlerhafte Datensatz lokalisiert werden.
Die EXCEPTIONS INTO Clause kann bei der Fehlersuche sehr hilfreich sein, egal ob sich bei dem CONSTRAINT um einen Foreign Key, Check, Unique, NOT NULL oder Primary Constraint handelt.
Tutorial – EXCEPTION INTO
In dem folgenden Tutorial wird der Einsatz der EXCEPTIONS INTO Clause anhand eines Beispieles demonstriert.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
-- Anlegen der Tabelle TEST_BESSERDICH CREATE TABLE TEST_BESSERDICH (ID NUMBER ,FEHLER_JN VARCHAR2(1)); -- 3 Datensätze einfpgen INSERT INTO TEST_BESSERDICH VALUES (1,'J'); INSERT INTO TEST_BESSERDICH VALUES (2,'N'); INSERT INTO TEST_BESSERDICH VALUES (3,'U'); -- Transkation festschreiben COMMIT; -- Exception Tabelle erstellen -- less $ORACLE_HOME/rdbms/admin/utlexpt1.sql create table exceptions(row_id urowid, owner varchar2(30), table_name VARCHAR2(30), constraint varchar2(30)); -- Check Constraint anlegen und evtl. fehlerhaften Datensätze in die den Constraint verletzen in die Exceptiontabelle schreiben ALTER TABLE TEST_BESSERDICH ADD CONSTRAINT TEST_BESSERDICH_CHK CHECK (FEHLER_JN IN ('J', 'N')) ENABLE VALIDATE EXCEPTIONS INTO EXCEPTIONS; -- Auslesen der fehlerhaften Datensätze die den Constraint verletzen SELECT * FROM TEST_BESSERDICH t WHERE 1=1 AND t.rowid IN (SELECT e.row_id FROM EXCEPTIONS e WHERE 1=1 AND e.CONSTRAINT= 'TEST_BESSERDICH_CHK' AND e.owner = USER); |
SCHREIBEN SIE EINEN KOMMENTAR