Misschien is er een INDEX
gekoppeld aan de PRIMARY KEY CONSTRAINT
, en het wordt ook genoemd als PK_B
.
U kunt het controleren als:
SELECT * FROM USER_INDEXES WHERE TABLE_NAME='<table_name>';
Als dat waar is, doe dan:
ALTER INDEX "PK_B" RENAME TO "PK_XYZ";
Update:Betreffende ALTER INDEX
verklaring, enkele belangrijke punten zoals vermeld door Justin in de opmerkingen
Oracle maakt impliciet een UNIQUE
index ter ondersteuning van de PRIMARY KEY CONSTRAINT
. Aangezien de index dezelfde naam heeft als de primaire sleutel, en nu de primaire sleutel wordt gewijzigd, is deze beter om de index te verwijderen en opnieuw te maken volgens de definitie van de oude primaire sleutel.
Mijn conclusie :
- De beperking van de primaire sleutel wordt afgedwongen via een unieke index.
- Als Oracle al een index vindt – uniek of niet-uniek – gebruikt het deze als primaire sleutel.
- Als de index aanvankelijk als niet-uniek is gemaakt, wordt deze nog steeds als niet-uniek weergegeven, maar in werkelijkheid is het een unieke index.
Een goede demonstratie en ook behoorlijk gedetailleerd over andere aspecten, door Arup:Primaire sleutels garanderen uniciteit? Denk nog eens na.