Sim, se é por tabela inteira (como eu disse, algo não-usual, mas enfim, se é, 
é) com certeza contraint de check para validar o domínio + índice de função 
unique que só indexe (e portanto só considere unicidade para ) o valor Pendente 
é o ideal, penso eu ....

 []s

  Chiappa

--- Em [email protected], Emerson Sanches <emerson.sanches@...> 
escreveu
>
> Boa tarde a todos, e obrigado pela atenção. Chiappa  a minha situação não é
> bem essa que você descreveu...........eu preciso que o campo status tenha
> apenas um registro preenchido com o valor "Pendente" na tabela inteira, e
> não por ID. Imagina uma tabela de histórico de acoes corretivas. Nesta
> tabela eu posso ter "varias" ações cadastradas (com vários id's diferentes)
> mas eu só posso ter UMA ação pendente de execução por vez, por isso minha
> necessidade, eu só posso cadastrar uma nova ação corretiva quando a ultima
> ações estiver concluída. Não sei se fui claro.
> Vou dar uma pesquisada melhor em índice baseado em função, que pelo que vi,
> é o que vai resolver meu caso.
> 
> Obrigado a todos.
> 
> Emerson Sanches
> Analista de Sistemas
> 
> 
> Em 7 de junho de 2013 12:08, J. Laurindo Chiappa
> <jlchiappa@...>escreveu:
> 
> > **
> >
> >
> > Bom, pelo que entendi a sua questão é ter uma 'constraint', um check de
> > unicidade apenas para o valor de STATUS=PENDENTE, permitindo que o mesmo ID
> > tenha vários registros com STATUS='CONCLUÍDO', certo ? Se sim, imagino que
> > seria usar um índice de função unique , cfrme
> > http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:21389386132607...
> > Mas isso é BEM unusual - se o ID é uma parte de chave e representa um
> > elemento único , ID + STATUS deveria ser único , indicando que em algum
> > momento o ID=1 ficou PENDENTE, até que em algum momento esse ID=1 se tornou
> > CONCLUIDO, e uma vez atingido status CONCLUIDO esse ID = 1 ** não **
> > deveria aceitar mais entradas de COMCLUIDO ... Neste caso a idéia seria
> > simplesmente se ter uma constraint CHECK STATUS IN ('PENDENTE',
> > 'CONCLUIDO', E um índice unique on (ID, STATUS) : aí sim, o mesmo ID não
> > poderia ter mais de um registro PENDENTE ou mais de um registro CONCLUIDO ,
> > o que me parece ser o "normal" ....
> >
> > []s
> >
> > Chiappa
> > --- Em [email protected], Emerson Sanches <emerson.sanches@>
> > escreveu
> >
> > >
> > > Bom dia pessoal da lista. Tenho uma tabela que tem a seguinte estrutura:
> > >
> > > ID,
> > > DESCRICAO,
> > > STATUS
> > >
> > > No campo status posso ter o valor Pendente ou Concluido. O meu problema
> > é o
> > > seguinte, eu queria bloquear a inserção de 2 registros com o campo
> > STATUS =
> > > Pendente. Hoje pra restringir isso eu faço um cursor na SP e antes da
> > > inclusão/alteração do registro eu verifico se ja nao existe outro
> > registro
> > > com o valor "Pendente" se existir eu gero um exceção e bloqueio a
> > > inserção/alteração.
> > > Gostaria de saber se existe outra forma de fazer isso, algo como um
> > > constraint nativa do Oracle.
> > >
> > > PS: No campo STATUS poderão ocorrer varios registros com o valor igual a
> > > "Concluido".
> > >
> > > Obrigado pela atenção.
> > >
> > > Emerson Sanches
> > > Analista de Sistemas
> > >
> > >
> > > [As partes desta mensagem que não continham texto foram removidas]
> > >
> >
> >  
> >
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>


Responder a