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