Senhores bom dia! Tem uma opção, indice baseado em função.. segue um exemplo que eu fiz...
---- CREATE TABLE TB_TESTE ( ID NUMBER , DESCRICAO VARCHAR2(100) , STATUS VARCHAR2(10) ) / CREATE UNIQUE INDEX IND_TESTE_U01 ON TB_TESTE ( CASE WHEN UPPER( STATUS ) = 'COMPLETE' THEN ID ELSE 1 END, STATUS ) / INSERT INTO TB_TESTE VALUES( 1, 'DESCRICAO QUALQUER', 'COMPLETE' ) / INSERT INTO TB_TESTE VALUES( 2, 'DESCRICAO QUALQUER', 'COMPLETE' ) / INSERT INTO TB_TESTE VALUES( 3, 'DESCRICAO QUALQUER', 'PENDING' ) / INSERT INTO TB_TESTE VALUES( 4, 'DESCRICAO QUALQUER', 'PENDING' ) / Somente o ultimo insert vai falhar.. Att., Eduardo Carlos Leite OCA/OCP Oracle Database 10g Fone: + 55 11 98354-5814 Eduardo Leite <http://br.linkedin.com/in/eleite> Em 7 de junho de 2013 10:59, Evandro Giachetto <[email protected]>escreveu: > Olá emerson. > > Acredito que a forma que está fazendo é sim a mais viável. (Considerando > que vc usou um trigger tipo statement para verificar a tabela antes de > inserir ou atualizar), visto que um indice unico nao resolveria justamente > por sua coluna permitir muitos valores 'Concluido'. E também não é possível > criar check constraints com funcoes de agrupamento. > > Resta agora ver como vc implementou seu trigger e cursor pra ver se é a > forma mais rápida de realizar tal teste. > > Se precisar de um help sabe que sempre pode contar. > > Abraço > Em 07/06/2013 10:40, "Emerson Sanches" <[email protected]> > 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] > > > > ------------------------------------ > > > -------------------------------------------------------------------------------------------------------------------------- > >Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de > inteira responsabilidade de seus remetentes. > Acesse: http://www.mail-archive.com/[email protected]/ > > -------------------------------------------------------------------------------------------------------------------------- > >Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » > Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! > VISITE: http://www.oraclebr.com.br/ > ------------------------------------------------------------------------------------------------------------------------ > Links do Yahoo! Grupos > > > [As partes desta mensagem que não continham texto foram removidas]
