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]