Wenn Sie einen Constraint einschalten möchten, kann es passieren, dass einige Zeilen gegen die Constraint Bedingung verstossen. Dafür kann eine Exception Tabelle angelegt werden.
- Exceptions Tabelle für Constraint-Prüfung anlegen:
create global temporary table exceptions(row_id rowid,
owner varchar2(128),
table_name varchar2(128),
constraint varchar2(128))
on commit preserve rows;
Wir legen die Tabelle aber als Temporary Tabelle an, dann werden die Zeilen am Ende der Session automatisch gelöscht
2. Rechte vergeben und Public Synonym anlegen
create public synonym exceptions for sys.exceptions;
grant insert,select on exceptions to public;
3. Testcase: Tabelle anlegen, Daten kopieren und Doublette eintragen
create table emp_copy as select * from emp;
select * from emp_copy;
insert into emp_copy (empno,ename) values (7839,'Marco');
4. Constraint auf Spalte legen, Außnahmen in Exceptions Tabelle
alter table emp_copy
add constraint empcopy_pk primary key (empno)
exceptions into exceptions;
5. Fehlerhafte Zeilen (Doubletten) anzeigen:
select * from emp_copy where rowid in (
select row_id from exceptions);