• Home  /
  • Artigos   /
  • Criando um índice de unicidade condicional no Oracle

Criando um índice de unicidade condicional no Oracle

Você já precisou garantir uma regra de negócio no banco de dados onde a unicidade se aplica apenas a alguns registros da tabela?

Veja este caso. Preciso garantir a unicidade para uma tabela de formas de pagamento apenas quando o tipo da forma de pagamento for cartão. Quero garantir que não haverão mais de um cartão para mesma autorizadora.

Posso fazer isto usando o decode:

create index idx_forma_pagamento_cartao on tipo_caixa
(
decode(tipo_forma_pagamento, 'CARTAO', codigo_forma_pagamento || '-'|| autorizadora_key, null)
);

Ou usando case when:

create index idx_forma_pagamento_cartao on forma_pagamento
(
   case when tipo_forma_pagamento = 'CARTAO', then 
     codigo_forma_pagamento || '-'|| autorizadora_key
   else
     null
   end
);

 

Desta forma, o Oracle só vai verificar a combinação codigo_forma_pagamento e autorizadora_key quando a forma de pagamento for cartão.

Tem alguma dúvida, sugestão ou critica?

Deixe seu comentário mais abaixo.

Até a próxima!

Related Articles:

—————————————-­—————————————-­—-

Este Post é um oferecimento de Acelerato – Gestão de Projetos ágeis e Help Desk

Não perca tempo, acesse acelerato.com, cadastre-se gratuitamente e descubra como podemos ajudá-lo.

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

Leave a comment