Leandro,
*1) Como é criado o atributo null que você mencionou no email anterior?
Como atribuir o valor por omissão?
*>> Mas você pode criar o atributo NULL, e depois atribuir um valor por
omissão.
=========================================================================================
*2) Outra coisa é que eu estava questionando a forma como a criação de
um campo com default se comporta.
*Conforme os testes que realizei abaixo, um alter table adicionando
coluna com default atualiza todos os registros anteriormente criados,
enquanto a alteração de uma coluna setando um default não.
o teste:
create table testdefault (id int4 not null primary key, nome
varchar(20) not null );
insert into testdefault values (1,'q');
insert into testdefault values (2,'w');
insert into testdefault values (3,'e');
select * from testdefault;
id | nome
----+------
1 | q
2 | w
3 | e
(3 registros)
alter table testdefault add novacoluna char(1) default 'U';
* -- este comando atualizou todos os registros anteriores
*
select * from testdefault;
id | nome | novacoluna
----+------+------------
1 | q | U
2 | w | U
3 | e | U
(3 registros)
alter table testdefault drop column novacoluna char(1);
alter table testdefault alter novacoluna set default 'U';
* -- este comando não atualizou os registros anteriores
*
select * from testdefault;
id | nome | novacoluna
----+------+------------
1 | q |
2 | w |
3 | e |
(3 registros)
*** Isto resolve meu problema.
=========================================================================================
*3) sobre as questões
*
Por padrão quando você atribui um dafault a um campo, o pg atualiza todos os
registros da tabela que estão null para o valor default.
O que é correto, só nos novos atributos.
No Oracle, para você me entender, o valor default só é atribuído para os
novos registros a partir da alteração da estrutura da tabela.
O que é estranho, concorda?
... criando polêmica... mas estamos aqui para discutir mesmo!!!
Na verdade não concordo. Como que o PG pode pressupor que o valor
default deve valer para todos os registros preexistentes, se uma tabela
é uma abstração de um conjunto de elementos de propriedades variáveis
definidas por uma aplicação genérica? Imagine uma tabela que armazene as
propriedades das frutas. Num determinado momento precisa-se adicionar
uma coluna com a cor da fruta e o campo vai com o default 'AZUL', então
a cor de todas as minhas frutas passariam a ser azul! bananas azuis,
abacaxis azuis, melões azuis! Pressupor para o passada é algo perigoso,
e o mais lógico é que o valor dos campos anteriores precisarem ser
atualizados com um valor correto, mas não predifinido com um valor
incorreto.
O que vocês acham?
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/
Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios