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]

Responder a