Removendo constraints no Oracle via alteração de tabela

Categoria: Oracle
Publicado em 10 de Julho de 2013

Constraint Primary Key

Pode ser removida utilizando uma das seguintes sintaxes:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ALTER TABLE TABELA_CLIENTES
DROP PRIMARY KEY 
;
 
ALTER TABLE TABELA_CLIENTES
DROP PRIMARY KEY CASCADE
;
 
ALTER TABLE TABELA_CLIENTES
DROP PRIMARY KEY KEEP_INDEX
;
 
ALTER TABLEA TABELA_CLIENTES 
DROP PRIMARY KEY DROP_INDEX
;

O ALTER TABLE das linhas 1 a 3 remove a chave-primária bem como o índice associado.

O ALTER TABLE das linhas 5 a 7 também irá remover constraints dependentes de outras tabelas, caso existam. Em contrapartida, se o código das linhas 1 a 3 for executado e existirem dependências externas, a constraint não será removida.

O ALTER TABLE das linhas 9 a 11 irá remover a chave-primária ao mesmo tempo em que manterá oíndice. Já o código das linhas 13 a 15 apagará o índice associado, assim como o código das linhas 1 a 3.

É possível utilizar CASCADE + KEEP_INDEX ou DROP_INDEX. Neste caso, o CASCADE deve ser declarado antes.

Constraints UNIQUE

Uma das seguintes sintaxes pode ser utilizada:

1
2
3
4
5
6
7
8
9
10
11
ALTER TABLE TABELA_CLIENTES
DROP UNIQUE(CPF)
;
 
ALTER TABLE TABELA_CLIENTES
DROP UNIQUE(CPF) KEEP_INDEX
;
 
ALTER TABLE TABELA_CLIENTES
DROP UNIQUE(CPF) DROP_INDEX
;

Se a constraint for formada por mais de um campo, eles devem ser separados por vírgula.

Ao remover uma constraint do tipo UNIQUE, seu índice associado também será apagado, a não ser que a opção KEEP_INDEX seja usada.

Constraint NOT NULL

Para remover uma constraint NOT NULL:

1
2
3
ALTER TABLE TABELA_CLIENTES
MODIFY COD_CIDADE NULL
;

Outras constraints

Para remover outras constraints, o nome da constraint deve ser utilizado (também pode ser usado para remover constraints do tipo primary key e unique):

1
2
3
4
5
6
7
8
9
10
11
ALTER TABLE TABELA_CLIENTES
DROP CONSTRAINT CK_EMAIL
;
 
ALTER TABLE TABELA_CLIENTES
DROP CONSTRAINT PK_COD_CLIENTE CASCADE
;
 
ALTER TABLE TABELA_CLIENTES 
DROP CONSTRAINT FK_COD_CIDADE
;


 

Copyright © Fernando Hidemi Uchiyama 2010 - Todos os direitos reservados