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

Pengecualian Pelanggaran Batasan ORA-00001

batasan unik memaksakan, yah, keunikan. Ini akan memungkinkan nulls, tidak seperti kendala kunci utama .

Kesalahan Anda berarti Anda memasukkan data duplikat ketika database telah dikonfigurasi untuk secara eksplisit melarang hal itu.

Anda dapat mengetahui batasan apa yang ada di tabel dengan menjalankan kueri berikut di semua_kendala . Tautan menerjemahkan kode kolom CONSTRAINT_TYPE , misalnya P adalah kunci utama dan U kunci unik.

select *
  from all_constraints uc
 where uc.table_name = 'MY_TABLE'
   and owner = 'DBSCHEMA'

Untuk mengetahui kolom apa yang berada dalam batasan, gunakan all_cons_columns sebagai gantinya, atau gabungkan keduanya menjadi satu kueri:

select uc.*, ucc.column_name, ucc.position
  from all_constraints uc
  join all_cons_columns ucc
    on uc.owner = ucc.owner
   and uc.table_name = ucc.table_name
   and uc.constraint_name = ucc.constraint_name
 where uc.table_name = 'MY_TABLE'
   and uc.owner = 'DBSCHEMA'

Untuk salah satu kueri, Anda dapat menambahkan ketentuan tambahan and constraint_name = 'IDX_CO_DETAILS' untuk mengetahui detail batasan spesifik yang tampaknya menyebabkan masalah Anda.

Komentar Anda sedikit mengejutkan karena beberapa alasan. Bahkan kendala yang dibuat sistem, misalnya yang didefinisikan in-line ketika tabel dibuat tanpa nama yang ditentukan akan muncul. Juga, nama kendala IDX... menyiratkan bahwa itu adalah indeks.

JIKA Anda menjalankan kueri berikut, kueri ini akan memberi tahu Anda jika objek tersebut ada di database:

select *
  from all_objects
 where object_name = 'IDX_CO_DETAILS'

Saya berharap bahwa OBJECT_TYPE dikembalikan oleh kueri ini adalah 'INDEX' .

Setelah itu, kueri berikut akan mengembalikan setiap indeks dengan nama itu, jenis indeks, tabel yang terkait dengannya, dan pemilik tabel itu.

select *
  from all_indexes
 where index_name = 'IDX_CO_DETAILS'

Dilihat dari kesalahan Anda, saya selanjutnya berharap bahwa kolom UNIQUNESS dikembalikan oleh kueri ini adalah 'UNIQUE' .

Ini akan membantu Anda melacak objek.

Anda juga dapat menggunakan paket sistem dbms_metadata untuk melacak DDL objek; hati-hati ia mengembalikan gumpalan.

select dbms_metadata.get_ddl('INDEX','IDX_CO_DETAILS', schema => 'DBSCHEMA') 
  from dual

parameter schema adalah opsional.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Transpose Baris Kolom di Oracle Sql

  2. kursor di pemicu

  3. Membuat kueri PEMBARUAN PENGEMBALIAN di Hibernate

  4. Kesalahan ORA-00604 saat penyisipan batch di dalam TransactionScope

  5. Penghentian Agen di EM13c