zenfra 0 Denunciar post Postado Junho 26, 2008 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
Motta 645 Denunciar post Postado Junho 26, 2008 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
zenfra 0 Denunciar post Postado Junho 27, 2008 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
Motta 645 Denunciar post Postado Junho 27, 2008 O registro 2 PR foi que violou a constraint. Compartilhar este post Link para o post Compartilhar em outros sites