sql >> Database teknologi >  >> RDS >> Oracle

Indfang værdier, der udløser DUP_VAL_ON_INDEX

Ideelt set vil jeg foreslå at bruge DML-fejllogning. For eksempel

Opret fejllogtabellen

begin
  dbms_errlog.create_error_log( dml_table_name => 'EMPLOYEE',
                                err_log_table_name => 'EMPLOYEE_ERR' );
end;

Brug DML-fejllogning

BEGIN
  insert into employee( id )
    select id 
      from (select '01' id from dual
            union all
            select '02' from dual) 
    log errors into employee_err
        reject limit unlimited;
END;

For hver række, der fejler, vil dette logge dataene for rækken i EMPLOYEE_ERR bord sammen med undtagelsen. Du kan derefter forespørge i fejllogtabellen for at se alle fejlene i stedet for kun at få den første række, der mislykkedes.

Hvis oprettelse af fejllogtabellen ikke er en mulighed, kan du flytte fra SQL til PL/SQL med bulk-operationer. Det vil være langsommere, men du kan bruge SAVE EXCEPTIONS klausul i FORALL sætning for at oprette en indlejret tabel med undtagelser, som du derefter kunne gentage.



  1. SQL 2008-udvikler til SQL Azure Migration

  2. Hvordan udtrækker man medianværdi?

  3. udføre en SQL-forespørgsel, der er gemt i en tabel

  4. Brug af alias for en forespørgsel til at forbinde med en anden tabel MySQL