Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Der ORA-00955-Name wird bereits von einem vorhandenen Objekt verwendet

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.