Vielleicht gibt es einen INDEX
der PRIMARY KEY CONSTRAINT
zugeordnet ist , und wird auch als PK_B
bezeichnet .
Sie können es wie folgt überprüfen:
SELECT * FROM USER_INDEXES WHERE TABLE_NAME='<table_name>';
Wenn das wahr ist, dann mach :
ALTER INDEX "PK_B" RENAME TO "PK_XYZ";
Aktualisierung:Bezüglich ALTER INDEX
Erklärung, einige wichtige Punkte, wie von Justin in den Kommentaren erwähnt
Oracle erstellt implizit einen UNIQUE
Index zur Unterstützung der PRIMARY KEY CONSTRAINT
. Da der Index denselben Namen hat wie der Primärschlüssel, und jetzt, da der Primärschlüssel geändert wird, ist er besser um den Index zu löschen und erneut gemäß der Definition des alten Primärschlüssels neu zu erstellen.
Mein Fazit :
- Die Primärschlüsseleinschränkung wird durch einen eindeutigen Index erzwungen.
- Wenn Oracle bereits einen Index findet – eindeutig oder nicht eindeutig – verwendet es ihn als Primärschlüssel.
- Wenn der Index ursprünglich als nicht eindeutig erstellt wurde, wird er weiterhin als nicht eindeutig angezeigt, ist aber tatsächlich ein eindeutiger Index.
Eine gute Demonstration und auch zu anderen Aspekten ziemlich detailliert von Arup:Primärschlüssel garantieren Eindeutigkeit? Denken Sie noch einmal nach.