Re: alter table add column myrow serial

From: Alvaro Herrera <alvherre(at)surnet(dot)cl>
To: Marcelo <marcelo(at)humano2(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: alter table add column myrow serial
Date: 2005-06-02 22:45:18
Message-ID: 20050602224517.GA25042@surnet.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Thu, Jun 02, 2005 at 12:31:55PM -0400, Marcelo wrote:

> Hola,
> Tengo una tabla que ya tiene registros y quiere agregarle una columna
> de tipo Serial.
>
> Como lo puedo hacer en 7.4 ya que me da errror al ejecutar
>
> ERROR: adding columns with defaults is not implemented
>
> Existe alguna manera que pueda lograr esto? Agregar una columna y
> luego hacer un update de alguna manera para que quede incremental los
> valores sin tener que hacer un loop por cada fila?

Hola, no puedes agregar campos SERIAL directamente. Lo que puedes
hacer:

1. agregar un campo de tipo INT

2. pegarle la secuencia al valor default de esa columna, ALTER TABLE ...
SET DEFAULT nextval('alguna secuencia');

3. poner los valores a cada registro, UPDATE tabla SET campo =
nextval('la misma secuencia')

Supongo que ademas querras ponerle una PRIMARY KEY o UNIQUE. Eso lo
haces con ALTER TABLE adicionales.

Lo malo es que esto no es exactamente igual que crear una tabla con
SERIAL desde el principio. La forma mas sana de hacer eso es creando
otra tabla, con el campo serial agregado, y reemplazar la antigua por
esta.

--
Alvaro Herrera (<alvherre[a]surnet.cl>)
"Industry suffers from the managerial dogma that for the sake of stability
and continuity, the company should be independent of the competence of
individual employees." (E. Dijkstra)

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2005-06-02 22:49:34 Re: Postgres 8 stable?
Previous Message Roberto Cesar Najera 2005-06-02 22:44:48 dbmirror