Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

O nome ORA-00955 já é usado por um objeto existente


Talvez haja um INDEX associado com a PRIMARY KEY CONSTRAINT , e também é nomeado como PK_B .

Você pode verificar como:
SELECT * FROM USER_INDEXES WHERE TABLE_NAME='<table_name>';

Se isso for verdade, então faça:
ALTER INDEX "PK_B" RENAME TO "PK_XYZ";

Atualização:em relação a ALTER INDEX declaração, alguns pontos importantes como mencionado por Justin nos comentários

O Oracle cria implicitamente um UNIQUE index para suportar a PRIMARY KEY CONSTRAINT . Como o índice tem o mesmo nome da chave primária, e agora que a chave primária está sendo modificada, é melhor para descartar e recriar o índice novamente de acordo com a definição da chave primária antiga.

Minha conclusão:
  • A restrição de chave primária é aplicada por meio de um índice exclusivo.
  • Se o Oracle já encontrar um índice – único ou não exclusivo – ele o usará para a chave primária.
  • Se o índice foi criado inicialmente como não exclusivo, ele continuará sendo exibido como não exclusivo, mas na verdade será um índice exclusivo.

Uma boa demonstração e bastante detalhada sobre outros aspectos também, por Arup :Chaves primárias garantem exclusividade? Pense novamente.