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

Oracle JDBC:Bagaimana cara mengetahui baris mana yang memberikan batasan kunci unik?

Satu-satunya cara (saya tahu) untuk mengetahui baris mana yang menyebabkan masalah adalah dengan menggunakan fitur "log error into" Oracle. Dengan begitu insert tidak akan mengeluarkan pengecualian dan setiap baris yang melanggar batasan apa pun akan ditulis ke dalam tabel kesalahan yang ditentukan.

Untuk melakukannya, Anda harus terlebih dahulu membuat tabel log yang menampung baris yang ditolak:

EXECUTE DBMS_ERRLOG.CREATE_ERROR_LOG('BD_VEHICLES_TEMP');

Itu akan membuat tabel bernama ERR$_BD_VEHICLES_TEMP

Kemudian jalankan ubah pernyataan Anda menjadi ini:

insert into bd_vehicles_temp 
select * 
from bd_vehicles_temp_1
LOG ERRORS REJECT LIMIT UNLIMITED;

Pernyataan akan berlanjut bahkan jika baris gagal memvalidasi batasan. Setelah pernyataan selesai, Anda dapat memeriksa isi tabel ERR$_BD_VEHICLES_TEMP untuk baris yang melanggar batasan termasuk pesan kesalahan dan nilainya.

(Sunting):Jika Anda ingin berhenti pada kesalahan pertama (dan melihatnya di tabel log), maka tinggalkan REJECT LIMIT UNLIMITED klausa.

Rincian lebih lanjut ada di manual:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle SQL:Mengekstrak minggu dalam setahun dari tanggal memberikan hasil acak

  2. Bagaimana cara menghapus Mesin Virtual dari VirtualBox

  3. Mengubah nilai port configureApplicationServer atribut Worklight

  4. Bagaimana Anda mengatur Incemental menjadi true untuk beberapa tabel dengan pemilik yang sama menggunakan DBMS_STATS.set_table_prefs?

  5. Apakah ada cara untuk memberikan pesan kesalahan yang mudah digunakan pada pelanggaran batasan?