Być może istnieje INDEX
powiązane z PRIMARY KEY CONSTRAINT
, i jest również nazwany jako PK_B
.
Możesz to sprawdzić jako :
SELECT * FROM USER_INDEXES WHERE TABLE_NAME='<table_name>';
Jeśli to prawda, zrób to :
ALTER INDEX "PK_B" RENAME TO "PK_XYZ";
Aktualizacja:dotyczy ALTER INDEX
oświadczenie, kilka ważnych punktów, o których wspomina Justin w komentarzach
Oracle niejawnie tworzy UNIQUE
indeks do obsługi PRIMARY KEY CONSTRAINT
. Ponieważ indeks ma taką samą nazwę jak klucz podstawowy, a teraz, gdy klucz podstawowy jest modyfikowany, jest lepiej aby usunąć i ponownie utworzyć indeks zgodnie z definicją starego klucza głównego.
Mój wniosek:
- Ograniczenie klucza podstawowego jest wymuszane przez unikalny indeks.
- Jeśli Oracle już znajdzie indeks – unikalny lub nieunikalny – używa go jako klucza podstawowego.
- Jeśli indeks został początkowo utworzony jako nieunikatowy, będzie nadal wyświetlany jako nieunikalny, jednak w rzeczywistości będzie indeksem unikalnym.
Dobra demonstracja i dość szczegółowa również w innych aspektach, autorstwa Arupa:Klucze podstawowe gwarantują niepowtarzalność? Pomyśl jeszcze raz.