Måske er der en INDEX
knyttet til PRIMARY KEY CONSTRAINT
, og det er også navngivet som PK_B
.
Du kan kontrollere det som :
SELECT * FROM USER_INDEXES WHERE TABLE_NAME='<table_name>';
Hvis det er sandt, så gør :
ALTER INDEX "PK_B" RENAME TO "PK_XYZ";
Opdatering:Angående ALTER INDEX
udtalelse, få vigtige punkter som nævnt af Justin i kommentarerne
Oracle opretter implicit en UNIQUE
indeks for at understøtte PRIMARY KEY CONSTRAINT
. Da indekset har samme navn som den primære nøgle, og nu hvor den primære nøgle bliver ændret, er det bedre for at droppe og genskabe indekset igen i henhold til definitionen af den gamle primærnøgle.
Min konklusion:
- Den primære nøglebegrænsning håndhæves gennem et unikt indeks.
- Hvis Oracle allerede finder et indeks – unikt eller ikke-unikt – bruger det det som primærnøglen.
- Hvis indekset oprindeligt blev oprettet som ikke-unik, vil det fortsætte med at blive vist som ikke-unik, men det vil faktisk være et unikt indeks.
En god demonstration og også ret detaljeret om andre aspekter af Arup :Primære nøgler garanterer unikhed? Tænk igen.