Restrição CHECK |
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) ); |
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. |
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'))); |
Realizado por Turtle Learning ®. Última alteração em 2011-08-14