Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Przechwytuj wartości, które wyzwalają DUP_VAL_ON_INDEX

Idealnie sugerowałbym użycie rejestrowania błędów DML. Na przykład

Utwórz tabelę dziennika błędów

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

Użyj rejestrowania błędów DML

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;

Dla każdego wiersza, który się nie powiedzie, dane tego wiersza zostaną zarejestrowane w EMPLOYEE_ERR tabela wraz z wyjątkiem. Następnie możesz wysłać zapytanie do tabeli dziennika błędów, aby zobaczyć wszystkie błędy, zamiast otrzymywać tylko pierwszy wiersz, który się nie powiódł.

Jeśli tworzenie tabeli dziennika błędów nie jest opcją, możesz przejść z SQL do PL/SQL za pomocą operacji zbiorczych. To będzie wolniejsze, ale możesz użyć SAVE EXCEPTIONS klauzula FORALL instrukcja, aby utworzyć zagnieżdżoną tabelę wyjątków, którą można następnie powtarzać.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak znaleźć nazwę miasta, która nie zaczyna się i nie kończy na samogłoskę?

  2. Nie masz niejawnej Aplikacji w zakresie:PlayFramework z Oracle

  3. cx_Oracle 'ORA-01843:niepoprawny miesiąc' z parametrem Unicode

  4. Czy możliwe jest zarządzanie bazą danych Oracle za pomocą flyway?

  5. Jak stworzyć dynamiczny sql dla z sys_refcursor w oracle?