Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Tangkap nilai yang memicu DUP_VAL_ON_INDEX

Idealnya, saya akan menyarankan menggunakan pencatatan kesalahan DML. Misalnya

Buat tabel log kesalahan

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

Gunakan pencatatan kesalahan 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;

Untuk setiap baris yang gagal, ini akan mencatat data untuk baris ke dalam EMPLOYEE_ERR tabel bersama dengan pengecualian. Anda kemudian dapat menanyakan tabel log kesalahan untuk melihat semua kesalahan daripada hanya mendapatkan baris pertama yang gagal.

Jika membuat tabel log kesalahan bukanlah pilihan, Anda dapat berpindah dari SQL ke PL/SQL dengan operasi massal. Itu akan lebih lambat tetapi Anda bisa menggunakan SAVE EXCEPTIONS klausa dari FORALL pernyataan untuk membuat tabel pengecualian bersarang yang kemudian dapat Anda ulangi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Permintaan Oracle untuk mengambil nama kolom

  2. Tidak mengerti mengapa SQL saya tidak berfungsi

  3. Melewati daftar yang ditentukan pengguna dari hibernasi ke prosedur tersimpan Oracle

  4. Berfungsi untuk mendapatkan jumlah hari kerja antara dua tanggal tidak termasuk hari libur

  5. Bagaimana cara menggunakan Oracle dari .NET?