Constraint Verletzung in eine EXCEPTION Tabelle protokollieren |
|
---|---|
Ausgangslage Ein beliebiges Constraint kann nicht aktiviert werden, da es die Constraint Regel verletzt. Die folgende Anleitung zeigt, wie die Row(s) gefunden werden können welche das Constraint verletzen. Beispiel Tabelle: CREDIT (Master) Exception Table kreieren CREATE TABLE except_table (row_id ROWID, Constraint Verletzung in except_table protokollieren ALTER TABLE order_req ENABLE ORA-02298: cannot enable (PPB.FK_ORDER_REQ_CREDIT) - parent keys not found Rows, welche Constraint verletzen auslisten SELECT DBMS_ROWID.ROWID_TO_RESTRICTED(ROWID,0) /*
Oracle 8 */ SELECT row_id FROM except_table; /* Oracle 7 */ DBMS_ROWID.ROWID_T Finden der entsprechenden Rows in der Originaltabelle SELECT TO_CHAR(create_date,'DD.MM.YYYY:HH24:MI:SS'),origin_id,ms_id TO_CHAR(CREATE_DATE ORIGIN_ID MS_ID SELECT TO_CHAR(create_date,'DD.MM.YYYY:HH24:MI:SS'),origin_id,ms_id TO_CHAR(CREATE_DATE ORIGIN_ID MS_ID SELECT TO_CHAR(create_date,'DD.MM.YYYY:HH24:MI:SS'),origin_id,ms_id TO_CHAR(CREATE_DATE ORIGIN_ID MS_ID Finden der entsprechenden Master-Row in der Parenttabelle SELECT TO_CHAR(create_date,'DD.MM.YYYY:HH24:MI:SS'),origin_id,ms_id no rows selected Löschen der rows in der Detailtabelle DELETE FROM order_req DELETE FROM order_req COMMIT; Constraint einschalten ALTER TABLE order_req ENABLE |