Може би има INDEX
свързан с PRIMARY KEY CONSTRAINT
, и също така се нарича PK_B
.
Можете да го проверите като:
SELECT * FROM USER_INDEXES WHERE TABLE_NAME='<table_name>';
Ако това е вярно, тогава направете :
ALTER INDEX "PK_B" RENAME TO "PK_XYZ";
Актуализация:Относно ALTER INDEX
изявление, няколко важни точки, както е споменато от Джъстин в коментарите
Oracle имплицитно създава UNIQUE
индекс за поддръжка на PRIMARY KEY CONSTRAINT
. Тъй като индексът е със същото име като на първичния ключ и сега, когато първичният ключ се променя, той е по-добър за премахване и създаване на отново индекса според дефиницията на стария първичен ключ.
Моето заключение:
- Ограничението на първичния ключ се налага чрез уникален индекс.
- Ако Oracle вече намери индекс – уникален или неуникален – той го използва за първичен ключ.
- Ако индексът първоначално е бил създаден като неуникален, той ще продължи да се показва като неуникален, но всъщност ще бъде уникален индекс.
Добра демонстрация и доста подробна и за други аспекти, от Arup:Гарантират ли първичните ключове уникалност? Помислете отново.