Motta 645 Denunciar post Postado Dezembro 6, 2005 Tenho a seguinte situacao (simplificando) tabela debitos -------- nosso_numero number pk (sequence) cod_cliente number mes_ref date situacao number mes_ref é sempre dia 01 (sem hora) situacao pode ser : 1 aberto 3 pago 5 recalculado Queria uma constraint que pudesse garantir só ter um registro em debitos (1 aberto ou 3 pago) e recalculados sem limite tentei : ALTER TABLE DEBITOS ADD CONSTRAINT XUK_SITUACAO UNIQUE ( cod_cliente, MES_REF, (case when situacao = 1 then 1 when situacao = 3 then 1 else nosso_numero end) ) / com decode tb não foi, há algum jeito ?? Em resumo : é possível criar uma unique constraint com function ?? Compartilhar este post Link para o post Compartilhar em outros sites
alphamek 2 Denunciar post Postado Dezembro 6, 2005 Motta, utilize a constraint CHECK, ele irá realizar o serviço de fazer a correção dos dados das colunas, exemplo: SQL > alter table OWNER.TABELA add constraint CHECK_VALOR check (coluna=1 or coluna=2); Irá irá filtrar os dados que irá entrar na sua coluna, cheque se a síntaxe está correta, fiz de cabeça. Abraços, http://forum.imasters.com.br/public/style_emoticons/default/clap.gif Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Dezembro 6, 2005 Não, Rogrigo não era bem isto , até vi uma solução mas como já tem registros não unicos dentro da condição não posso usar mais a unique. De qq forma valeu !! Compartilhar este post Link para o post Compartilhar em outros sites
alphamek 2 Denunciar post Postado Dezembro 9, 2005 Mais você não quer restringir apenas alguns valores da coluna, podendo ser duplicados? Abraços, :D Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Dezembro 9, 2005 Queria uma regra do tipo : Só pode haver um boleto ativo (1-aberto,2-pago) por mês e qts cancelados houver (3) debitos -------- nosso_numero number pk (sequence) cod_cliente number mes_ref date situacao number consegui fazer (usando case num index unico) , mas como a tabela já estava bichada de outros carnavais , não consegui criar (a sintaxe) funcionou, fiz uma trigger de before insert e resolveu. valeu !! Compartilhar este post Link para o post Compartilhar em outros sites
alphamek 2 Denunciar post Postado Dezembro 9, 2005 Ok Mister.... manda bala agora. http://forum.imasters.com.br/public/style_emoticons/default/clap.gif Compartilhar este post Link para o post Compartilhar em outros sites