Meu caro Jales, 

 

  Como tudo no mundo oracle, isso “depende” e vou mostrar abaixo onde ele 
remove ou não a constraint e o índice dependendo de como foi criado os dois:

 

SQL> set lin 1000

SQL> drop table teste

Table dropped.

SQL> create table teste (a number, b number)

Table created.

SQL> create index ind1 on teste(a)

Index created.

SQL> alter table teste add constraint teste_pk primary key (a) using index

Table altered.

SQL> select owner,constraint_name,index_name from all_constraints where 
table_name='TESTE'

 

OWNER                          CONSTRAINT_NAME                INDEX_NAME        
            

------------------------------ ------------------------------ 
------------------------------

SYSTEM                         TESTE_PK                       IND1              
            

 

 

1 row selected.

SQL> select owner, index_name,table_name from all_indexes where 
table_name='TESTE'

 

OWNER                          INDEX_NAME                     TABLE_NAME        
            

------------------------------ ------------------------------ 
------------------------------

SYSTEM                         IND1                           TESTE             
            

 

 

1 row selected.

SQL> alter table teste drop constraint teste_pk

Table altered.

SQL> select owner,constraint_name,index_name from all_constraints where 
table_name='TESTE'

no rows selected.

SQL> alter table teste add constraint teste_pk primary key (b) using index

Table altered.

SQL> select owner,constraint_name,index_name from all_constraints where 
table_name='TESTE'

 

OWNER                          CONSTRAINT_NAME                INDEX_NAME        
            

------------------------------ ------------------------------ 
------------------------------

SYSTEM                         TESTE_PK                       TESTE_PK          
            

 

 

1 row selected.

SQL> select owner, index_name,table_name from all_indexes where 
table_name='TESTE'

 

OWNER                          INDEX_NAME                     TABLE_NAME        
            

------------------------------ ------------------------------ 
------------------------------

SYSTEM                         IND1                           TESTE             
            

SYSTEM                         TESTE_PK                       TESTE             
            

 

 

2 rows selected.

SQL> alter table teste drop constraint teste_pk

Table altered.

SQL> select owner,constraint_name,index_name from all_constraints where 
table_name='TESTE'

no rows selected.

SQL> select owner, index_name,table_name from all_indexes where 
table_name='TESTE'

 

OWNER                          INDEX_NAME                     TABLE_NAME        
            

------------------------------ ------------------------------ 
------------------------------

SYSTEM                         IND1                           TESTE             
            

 

 

1 row selected.

 

 

 

Atenciosamente,

 

Rodrigo Mufalani 

Descrição: Description: Description: O_ACELogo_clr
Database Administrator, Oracle OCP
 <mailto:[email protected]> [email protected]
-----------------------------------------------------
Mufalani IT Services 

Rua Candelária 9, Grupo 803  

Centro – Rio de Janeiro – CEP 20091-904

 <http://www.mufalani.com.br/> www.mufalani.com.br 
-----------------------------------------------------

 

De: [email protected] [mailto:[email protected]] Em nome 
de Jales Jose Moraes
Enviada em: terça-feira, 4 de setembro de 2012 13:39
Para: [email protected]
Assunto: Re: RES: [oracle_br] Índice em pk

 

  

Ele não deixa apagar o índice, tenho que antes apagar a constraint (no qual 
implicitamente o índice também é removido).
 
13:35:54  ORA-02429: não é possível eliminar o índice usado para imposição da 
chave exclusiva/primária
 
Mas na hora da recriação da constraint ja com a coluna nova, ao verificar o 
índice, ela não é reconhecida, ficando na estrutura anterior. 
ALTER TABLE entrega_01ADD CONSTRAINT par_pk PRIMARY KEY (id_entrega, 
an_entrega)USING 
TABLESPACE tbs_hmgINDEX/

________________________________
De: Rodrigo Mufalani <[email protected] 
<mailto:rodrigo%40mufalani.com.br> >
Para: [email protected] <mailto:oracle_br%40yahoogrupos.com.br>  
Enviadas: Terça-feira, 4 de Setembro de 2012 13:31
Assunto: RES: [oracle_br] Índice em pk

  
Boa tarde,

Simples, drope o índice e recrie-o novamente com as colunas indicadas (se
não criou o a constraint ainda). Se já criou a constraint, o comando criou o
índice já das colunas novas.

Atenciosamente,

Rodrigo Mufalani 

Descrição: Description: Description: O_ACELogo_clr
Database Administrator, Oracle OCP
<mailto:mailto:rodrigo%40mufalani.com.br> mailto:rodrigo%40mufalani.com.br
-----------------------------------------------------
Mufalani IT Services 

Rua Candelária 9, Grupo 803 

Centro – Rio de Janeiro – CEP 20091-904

<http://www.mufalani.com.br/> www.mufalani.com.br 
-----------------------------------------------------

De: mailto:oracle_br%40yahoogrupos.com.br 
[mailto:mailto:oracle_br%40yahoogrupos.com.br] Em
nome de Jales Jose Moraes
Enviada em: terça-feira, 4 de setembro de 2012 13:27
Para: grupo_oracle
Assunto: [oracle_br] Índice em pk

Pessoal ao dropar uma constraint de PK para reconstruir com uma nova coluna,
o índice que é recriado não reconhece a nova coluna ficando com as colunas
antigas.

Como resolver a questão?

[As partes desta mensagem que não continham texto foram removidas]

[As partes desta mensagem que não continham texto foram removidas]

[As partes desta mensagem que não continham texto foram removidas]





[As partes desta mensagem que não continham texto foram removidas]

Responder a