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)
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 |