A linguagem SQL > DDL > Tabelas > Restrição CHECK
Restrição CHECK tl_logo2.jpg

A restrição CHECK permite a definição de uma condição que será validada nas operações de INSERT e UPDATE para cada linha afectada. Se o resultado da validação for TRUE a operação tem sucesso. Caso contrário a operação dá erro. A condição é construída com a mesma sintaxe que é utilizada na cláusula WHERE de uma instrução SELECT, embora não se possa incluir um SUBSELECT à própria tabela.

create table JOGO  (
   EQUIPA_CASA          NUMBER(10,0)                    not null,
   EQUIPA_VISITANTE     NUMBER(10,0)                    not null,
   DATA                 DATE                            not null,
   LOCAL                VARCHAR2(100)                  default 'Estádio Alvalade XXI' not null,
   RISCO_SEGURANCA      VARCHAR(100)                    not null,
   constraint PK_JOGO primary key (EQUIPA_CASA, EQUIPA_VISITANTE, DATA),
   constraint FK_JOGO_REF_EQUIPA_CASA foreign key (EQUIPA_CASA)
         references EQUIPA (ID_EQUIPA),
   constraint FK_JOGO_REF_EQUIPA_VISITANTE foreign key (EQUIPA_VISITANTE)
         references EQUIPA (ID_EQUIPA),
   constraint CK_JOGO_01 check (risco_seguranca in ('Alto','Medio','Baixo') and equipa_casa != equipa_visitante)
);

create table CONTRATADO  (
   ID_JOGADOR           NUMBER(10,0)                    not null,
   ID_EQUIPA            NUMBER(10,0)                    not null,
   DATA_INICIO          DATE                            not null,
   DATA_FIM             DATE                            not null,
   constraint PK_CONTRATADO primary key (ID_JOGADOR, ID_EQUIPA, DATA_INICIO),
   constraint FK_CONTRATA_REFERENCE_JOGADOR foreign key (ID_JOGADOR)
         references JOGADOR (ID_JOGADOR),
   constraint FK_CONTRATA_REFERENCE_EQUIPA foreign key (ID_EQUIPA)
         references EQUIPA (ID_EQUIPA),
   constraint CKT_CONTRATADO check (data_inicio < data_fim)
);

note04.gif

Uma restrição CHECK pode ser adicionada a uma tabela já existente usando a sintaxe de coluna ou de tabela, como mostram os exemplos abaixo que foram adaptados à tabela JOGO:

alter table JOGO drop constraint CK_JOGO_01;

alter table jogo add constraint CK_JOGO_01 check (risco_seguranca in ('Alto','Medio','Baixo'));
alter table jogo add constraint CK_JOGO_02 check (equipa_casa != equipa_visitante);

alter table JOGO drop constraint CK_JOGO_01;
alter table JOGO drop constraint CK_JOGO_02;

alter table jogo add constraint CK_JOGO_01 check (risco_seguranca in ('Alto','Medio','Baixo') and (equipa_casa != equipa_visitante));
alter table JOGO succeeded.

alter table jogo succeeded.

alter table jogo succeeded.

alter table JOGO succeeded.

alter table JOGO succeeded.

alter table jogo succeeded.

note04.gif

A restrição CHECK pode ser criada usando sintaxe de coluna, como no exemplo abaixo:

alter table JOGO modify (risco_seguranca constraint CK_JOGO_03 check (risco_seguranca in ('Alto','Medio','Baixo')));

note04.gif

bthome.gifTopo


Realizado por Turtle Learning ®. Última alteração em 2011-08-14