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.