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