Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Tên ORA-00955 đã được một đối tượng hiện có sử dụng

Có lẽ có một INDEX được liên kết với PRIMARY KEY CONSTRAINT và nó cũng được đặt tên là PK_B .

Bạn có thể kiểm tra nó như là:

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

Nếu đó là sự thật, thì hãy làm:

ALTER INDEX "PK_B" RENAME TO "PK_XYZ";

Cập nhật:Về ALTER INDEX tuyên bố, một vài điểm quan trọng như được Justin đề cập trong phần bình luận

Oracle ngầm tạo ra một UNIQUE lập chỉ mục để hỗ trợ PRIMARY KEY CONSTRAINT . Vì, chỉ mục có cùng tên với khóa chính và hiện tại khóa chính đang được sửa đổi nên tốt hơn để thả và tạo lại chỉ mục một lần nữa theo định nghĩa của khóa chính cũ.

Kết luận của tôi:

  • Ràng buộc khóa chính được thực thi thông qua một chỉ mục duy nhất.
  • Nếu Oracle đã tìm thấy một chỉ mục - duy nhất hoặc không duy nhất - thì Oracle sẽ sử dụng nó cho khóa chính.
  • Nếu ban đầu chỉ mục được tạo là không duy nhất, chỉ mục đó sẽ tiếp tục hiển thị là không duy nhất, tuy nhiên nó thực sự sẽ là một chỉ mục duy nhất.

Một minh chứng hay và khá chi tiết về các khía cạnh khác của Arup: Đảm bảo Tính duy nhất của Khóa Chính? Hãy suy nghĩ lại.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tìm nạp giá trị con trỏ với% ROWTYPE

  2. Oracle - trích xuất dấu thời gian từ chuỗi varchar?

  3. Các giá trị ROWID của Oracle

  4. PLS-00103:Gặp ký hiệu “end-of-file” trong khối cập nhật đơn giản

  5. Không thể sử dụng LISTAGG