[PostgreSQL-Brasil] Alter table com campo default
Euler Taveira de Oliveira
euler em timbira.com
Sexta Abril 27 00:36:36 UTC 2007
Rudinei Dias wrote:
> >>Por padrao quando voce atribui um dafault a um campo, o pg atualiza todos os registros da tabela que estao null para o valor default.
>
> > O que e correto, so nos novos atributos.
>
Não. Segundo o padrão SQL, ao criar uma nova coluna de uma tabela o
valor padrão é aplicado para toda a coluna.
"ii) Otherwise, every value in C is the default value for C."
Esse comportamento também está documentado no PostgreSQL [1].
> >> No Oracle, para voce me entender, o valor default so e atribuido para os
> novos registros a partir da alterac,ao da estrutura da tabela.
>
> > O que e estranho, concorda?
>
Estranho mesmo. O Oracle não segue vários aspectos do padrão SQL.
> ... criando polemica... mas estamos aqui para discutir mesmo!!!
> Na verdade nao concordo. Como que o PG pode pressupor que o valor default
> deve valer para todos os registros preexistentes, se uma tabela e uma
> abstrac,ao de um conjunto de elementos de propriedades variaveis definidas
> por uma aplicac,ao generica? 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', entao a cor
> de todas as minhas frutas passariam a ser azul! bananas azuis, abacaxis
> azuis, meloes azuis! Pressupor para o passada e algo perigoso, e o mais
> logico e que o valor dos campos anteriores precisarem ser atualizados com
> um valor correto, mas nao predifinido com um valor incorreto.
> O que voces acham?
Se quiser mudar o padrão, sinta-se a vontade para sugerir isso ao comitê.
Particularmente acho que eles não vão te ouvir por que você pode fazer o
que quer com dois comandos SQL.
ALTER TABLE foo ADD COLUMN bar VARCHAR(20);
ALTER TABLE foo ALTER COLUMN bar SET DEFAULT 'baz';
[1] http://www.postgresql.org/docs/8.2/static/sql-altertable.html
--
Euler Taveira de Oliveira
http://www.timbira.com/
Mais detalhes sobre a lista de discussão Brasil-Usuarios