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
