2009/10/21 Joao Cosme de Oliveira Junior <joao.co...@serpro.gov.br>
>
> Só para complementar .....
> Null significa indeterminado ou não se aplica ....
>
> Por exemplo: o caboclo vai preencher um ficha e tem lá : número de gestações 
> : coloque null , porque não se aplica!
> Em outro caso pode ser indeterminado. Um exemplo bem tosco... em um campo 
> idade:
>
> Então null não vai garantir unicidade, porque pode ser qualquer valor 
> indeterminado. Por exemplo um campo null em um registro não tenho como dizer 
> que é igual a um campo null em outro registro, já que são indeterminados!!

Só para lembrar:
O PostgreSQL possui a comparação IS [NOT] DISTINCT FROM que trata
NULLs como sendo "iguais":

bdteste=# SELECT NULL  IS NOT DISTINCT FROM  NULL;
 ?column?
----------
 t
(1 registro)

bdteste=# SELECT NULL  IS DISTINCT FROM  NULL;
 ?column?
----------
 f
(1 registro)

ENQUANTO

bdteste=# SELECT NULL = NULL;
 ?column?
----------
 (null)
(1 registro)


>
> Loucura Loucura !!!
>
> Abraços!!!
>
>
>
> João Cosme de Oliveira Júnior
>
> Seja inteligente, use Software-livre!!!
> LPI Certified
> LPI000185554
>
>
> Em 21/10/2009 às 15:13 horas, pgbr-geral@listas.postgresql.org.br escreveu:
>
> Muito obrigado, vou estar assim que chegar em casa.
>
> 2009/10/21 Osvaldo Kussama <osvaldo.kuss...@gmail.com>
>>
>> 2009/10/21 Nilson Chagas <nilson.chagas.si...@gmail.com>:
>> > Pessoal, vou fazer uma pergunta, creio eu de pura ignorancia, mas não sei
>> > nem como procurar isto.
>> >
>> >
>> > Tenho um campo na tabela que deve ser unico, salvo se ele estiver nulo, não
>> > testei mas até onde eu sei indices unicos não permitem duplicar campos
>> > nulos.
>> >
>> > Alguém pode me esclarecer isto??
>> >
>>
>>
>> Creio que é possível inserir vários registros que tenham o campo do índice 
>> NULL.
>>
>> bdteste=# CREATE TEMP TABLE foo(x int);
>> CREATE TABLE
>> bdteste=# CREATE UNIQUE INDEX id_x ON foo(x);
>> CREATE INDEX
>> bdteste=# INSERT INTO foo VALUES (0);
>> INSERT 0 1
>> bdteste=# INSERT INTO foo VALUES (1);
>> INSERT 0 1
>> bdteste=# INSERT INTO foo VALUES (1);
>> ERRO:  duplicar valor da chave viola a restrição de unicidade "id_x"
>> bdteste=# INSERT INTO foo VALUES (null);
>> INSERT 0 1
>> bdteste=# INSERT INTO foo VALUES (null);
>> INSERT 0 1
>> bdteste=# INSERT INTO foo VALUES (null);
>> INSERT 0 1
>>
>> bdteste=# \pset null '(null)'
>> Exibição nula é "(null)".
>> bdteste=# SELECT * FROM foo;
>>   x
>> --------
>>      0
>>      1
>>  (null)
>>  (null)
>>  (null)
>> (5 registros)
>>


Osvaldo
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a