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.