Rudinei Dias escreveu:
> O que preciso é que o default no alter table não realize alterações nos 
> registros existentes.
> 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.
> 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.
> Existe algum comando que desabilite essa operação automática do default 
> no pg?


Como o Leandro já havia dito você deve:
- alterar a tabela adicionando o novo campo (com ou sem a clásula 
DEFAULT, se ela não for especificada seu conteudo será NULL);
- fazer nova alteração da tabela atribuindo o valor default:
  (ALTER [ COLUMN ] column SET DEFAULT expression). Será válido apenas 
para os próximos insert.
Veja:
http://www.postgresql.org/docs/8.2/interactive/sql-altertable.html


> 
> Quanto a ser ou não boa prática isso depende da semântica do campo.
> Quando um campo possui um valor null, a pesquisa por is null ou is not 
> null não é mais
>  rápida do que a comparação com um atributo valorado NULL?

???????


> 
> Valeu.
> 
> Leandro Guimarães Faria Corcete DUTRA wrote:
>> Em Qua, 2007-04-25 às 10:15 -0300, Rudinei Dias escreveu:
>>   
>>> Como fazer com que um alter table adicionando um campo com default não 
>>> atualize os registros existentes?
>>> É que o alter table dá um update em todos os registros da tabela com o 
>>> valor default.
>>>     
>>      Está um pouco difícil te entender, mas creio que você quer que os
>> registros já existentes tenham NULL?
>>
>>      Isso não é boa prática, o ideal seria um valor especial — como o
>> próprio DEFAULT.
>>
>>      Mas você pode criar o atributo NULL, e depois atribuir um valor por
>> omissão.
>>


[]s
Osvaldo
_______________________________________________
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

Responder a