[firebase-br] CONSTRAINT - UNIQUE

Gladiston Santana gladiston em vidy.com.br
Ter Ago 6 09:35:46 -03 2019


constraint é uma regra de campo, aceita qualquer tipo de lógica que você
possa impor com os comandos SQL, neste caso usando algo como
COALESCE(VALUE,'')<>''.
Eu não gosto muito de manter nulos em campos de lookup, pois nulos tem de
ser tratados em agregadores e podem fazer-nos penar em algumas situações
então em muitas situações em faço assim, por exemplo, numa tabela de
clientes tem o campo de estado( END_UF), mas o estado informado deve
existir na tabela de estados(ADMIN_UF), contudo é permissível não informar
o estado, mas não quero nulos. Daí imponho uma regra assim:
CREATE TABLE CLIENTES (
...
    END_UF   CHAR(2) DEFAULT '*' NOT NULL CHECK ((VALUE='*') OR
       (EXISTS(SELECT * FROM ADMIN_UF WHERE UF=VALUE))) */,
...)
Na regra acima ou é um estado pré-cadastrado ou então é "*". Nulos não
entram.

Sobre o unique, só me faz lembrar de indices, indices não subtraem ou negam
informações, apenas os ordena.
São permitidos expressões como usando coalesce para tratar nulos.
Normalmente o fazemos em conjunto com uma expressão matematica para
ordernar as melhores compras num leque de opções ou algo do genêro, sem a
intenção de provocar uma pesquisa mais rapida. Atualmente, com o advento de
tabelas temporarias e procedures selecionáveis é muito dificil justificar o
uso de indices desse tipo.

[] ´s e sucesso.

Em sex, 2 de ago de 2019 às 10:05, Moacir Kuhn <moacir em softin.com.br>
escreveu:

> Senhores,
>
>
>
> È possível criar uma CONSTRAINT  - UNIQUE levando em consideração apenas os
> registros que tenham conteúdo no campo desejado, desprezando os
> NULL/Brancos?
>
>
>
> Att,MOacir
>
>
>



Mais detalhes sobre a lista de discussão lista