| 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