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] >
