Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

zenfra

Add constraint check em coluna com valores

Recommended Posts

Boa tarde,

 

Gostaria de saber se é possível alterar uma tabela onde desejo adicionar uma constraint check para um campo que já possui valores, porém, a partir de agora os valores imputados nesse campo deverão ser validados?

 

Versões 8 9 e 10G

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem a opção NOVALIDATE que faz com que o Oracle não cheque a constraint para os registros da tabela antes de salvar, mas se um registro que viole a constraint for alterado este não poderá ser salvo pois a constraint não deixará.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beleza,

 

Funcionou,

 

Possuo uma tabela de teste chamada tb_estado com a seguinte estrutura:

 

Nome									  Nulo?	Tipo
----------------------------------------- -------- ----------------------------
NM_ESTADO_ID							  NOT NULL NUMBER(38)
DS_ESTADO_DESC									 VARCHAR2(100)
Armazenando os seguintes registros:

 

NM_ESTADO_ID   DS_ESTADO_DESC
------------		   --------------------------------------------------------------------------------
	 4					RS
	 2					PR
	 3					PA

Não possuia constraint CHECK, então, adicionoei a seguinte que foi aceita:

 

alter table tb_estado add constraint ck_estado_desc check(ds_estado_desc in('SP','PA','RS')) novalidate;

 

Note que SP não estava na lista, mas aceitou!

 

Sem o novalidade no final o seguinte erro era exibido :

 

SQL> alter table tb_estado add constraint ck_estado_desc check(ds_estado_desc in('SP','PA','RS'));
alter table tb_estado add constraint ck_estado_desc check(ds_estado_desc in('SP','PA','RS'))
									 *
ERRO na linha 1:
ORA-02293: nÒo Ú possÝvel validar (WAGNER.CK_ESTADO_DESC) - restriþÒo de
verificaþÒo violada

Compartilhar este post


Link para o post
Compartilhar em outros sites

O registro

2 PR

foi que violou a constraint.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.