DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 
DevWare  
Novidade: DevMedia lança o DevWare - Saiba mais!

Criação de Constraints CHECK no Oracle

Veja neste artigo como utilizar a instrução ALTER TABLE para adicionar restrições do tipo CHECK à colunas de tabelas do Oracle.

[fechar]

Você não gostou da qualidade deste conteúdo?

(opcional) Você gostaria de comentar o que não lhe agradou?

1. Introdução

No SGBD Oracle, a instrução ALTER TABLE pode ser utilizada com diferentes finalidades. Talvez a mais importante delas seja a modificação das propriedades de uma coluna. Além de modificar propriedades como o tipo e o tamanho da coluna, outra coisa bastante interessante que pode ser feita é associar uma restrição (constraint) para a coluna.

As restrições mais comumente utilizadas são chave primária, chave estrangeira e not null. No entanto, existe outro tipo muito útil que nem sempre é lembrado pelos desenvolvedores: a restrição check. Uma restrição check define uma condição que deverá ser satisfeita sempre que um valor para a coluna for inserido ou modificado. Por exemplo: podemos associar uma restrição check àcoluna sexo para que ela aceite apenas os valores “F” e “M”. A seção a seguir mostra como utilizar a instrução ALTER TABLE para definir constraints do tipo check.

2. Criando Restrições do Tipo Check

Considere uma tabela chamada T_PESSOA, cujo script de criação é mostrado na Listagem 1.

Listagem 1: Tabela T_PESSOA

CREATE TABLE T_PESSOA(
  COD_PESSOA NUMBER(7) PRIMARY KEY,
  UF CHAR(2),  
  IDADE NUMBER(2),
  STATUS NUMBER(1)
) 

A Listagem 2 mostra o script para criar uma restrição check que faz com que o campo UF só aceite estados da região Sudeste. O formato da instrulção é o seguinte: primeiro você deve escrever a instrução ALTER TABLE ADD CONSTRAINT seguida do nome que você deseja para a restrição (no exemplo, o nome escolhido foi “ck_uf”). Depois você escreve a palavra CHECK e define a regra para a restrição entre parênteses. No exemplo da listagem 2, a regra é: o campo “uf” só deve aceitar valores que façam parte do conjunto (‘RJ’, ‘SP’, ‘MG’, ‘ES’).

Listagem 2: Restrição CHECK para o campo UF

ALTER TABLE T_PESSOA
ADD CONSTRAINT ck_uf
CHECK (uf IN (‘RJ’,’SP’,’MG’,’ES’)); 

O exemplo da Listagem 3 mostra o script para criar uma restrição check sobre um campo numérico, o campo “idade”. O nome da constraint é “ck_idade” e ela define como regra, que o campo idade só pode aceitar valores iguais ou maiores do que 18.

Listagem 3: Restrição CHECK para o campo IDADE

ALTER TABLE T_PESSOA
ADD CONSTRAINT ck_idade
CHECK (idade > 17); 

Na verdade, o Oracle é tão flexível, que permite até mesmo a criação de restrições envolvendo mais de uma coluna, como mostra a Listagem 4.

Listagem 4: Restrição CHECK sobre dois campos

ALTER TABLE T_PESSOA
ADD CONSTRAINT ck_composta
CHECK (status > 0 AND uf=’RJ’); 

Para apagar uma constraint, é necessário utilizar a instrução ALTER TABLE com a cláusula DROP CONSTRAINT (Listagem 5).

Listagem 5: Excluindo uma constraint

ALTER TABLE T_PESSOA
DROP CONSTRAINT ck_composta; 

Neste artigo, novamente examinamos a importância do comando ALTER TABLE, que pode ser utilizado com vários objetivos distintos no Oracle. Dessa vez, mostramos como podemos utilizá-lo para adicionar restrições do tipo CHECK em tabelas. Até a próxima!


Eduardo Corrêa Gonçalves
Doutorando e mestre em Ciência da Computação pelo Instituto de Computação da Universidade Federal Fluminense (IC/UFF). Atua principalmente nas seguintes linhas de pesquisa: Mineração de Dados, Algoritmos, Banco de Dados e XML.
O que você achou deste post?

    2 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Brunãooo
Eduardo Corrêa Gonçalves, parabéns pelo seu artigo! Através dele consegui resolver uma questão no trabalho, você me ajudou muito! Que Deus te abençoe sempre e não deixe de criar artigos tão bem redigidos.
[há 28 dias] - Responder

 

[autor] Eduardo Corrêa Gonçalves
Obrigado pelo retorno! Fico feliz pelo artigo ter sido útil!
[há 17 dias] - Responder
 
Cursos relacionados
Publicidade
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
[Fechar] Você precisa estar logado para dar seu feedback.

Clique aqui para efetuar o login

Caso não tenha um cadastro DevMedia, clique aqui para se cadastrar (gratuito)
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03