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

Nama ORA-00955 sudah digunakan oleh objek yang ada

Mungkin ada INDEX terkait dengan PRIMARY KEY CONSTRAINT , dan juga disebut sebagai PK_B .

Anda dapat memeriksanya sebagai :

SELECT * FROM USER_INDEXES WHERE TABLE_NAME='<table_name>';

Jika itu benar, maka lakukan :

ALTER INDEX "PK_B" RENAME TO "PK_XYZ";

Pembaruan :Mengenai ALTER INDEX pernyataan, beberapa poin penting seperti yang disebutkan oleh Justin di komentar

Oracle secara implisit membuat UNIQUE index untuk mendukung PRIMARY KEY CONSTRAINT . Karena, indeks memiliki nama yang sama dengan nama kunci utama, dan sekarang setelah kunci utama diubah, ini lebih baik untuk menjatuhkan dan membuat ulang indeks lagi sesuai dengan definisi kunci utama lama.

Kesimpulan saya :

  • Batasan kunci utama diterapkan melalui indeks unik.
  • Jika Oracle sudah menemukan indeks – unik atau tidak unik – ia menggunakannya untuk kunci utama.
  • Jika indeks awalnya dibuat sebagai non-unik, indeks akan terus ditampilkan sebagai non-unik, namun sebenarnya akan menjadi indeks unik.

Demonstrasi yang bagus dan cukup detail pada aspek lain juga, oleh Arup :Kunci Utama Menjamin Keunikan? Pikirkan Lagi.



  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:Mengapa saya tidak bisa mengandalkan ROWNUM dalam klausa penghapusan

  2. Mengganti bagian dari paket Oracle

  3. Bagaimana cara memeriksa apakah nilai kolom secara eksplisit ditentukan dalam pemicu PL/SQL SEBELUM UPDATE?

  4. _gc_fusion_compression

  5. Ubah VARCHAR2 menjadi Angka