[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