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.

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!

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados