Re: asignar valor creciente

From: Arturo Munive <arturomunive(at)gmail(dot)com>
To: usuario anonimo <opinante(dot)anonimo(at)gmail(dot)com>
Cc: Postgresql <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: asignar valor creciente
Date: 2007-06-15 14:34:18
Message-ID: 4672A36A.8010500@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Encontré una solución que sirve para salir del paso pero no creo que sea
correcto hacer de esa manera las cosas.

para usar la solución que anonimo me dio con secuencias, pero me salga
ordenado
por código

primero creé un indice sobre codigo, luego le hice un cluster a la tabla
(para ordernarlo fisicamente por el orden del indice que tenia)

luego aplique

update codigos set orden = DEFAULT;

como se supone que la tabla estaba ordenada físicamente en razón de
codigo despues del cluster entonces el update dio los valores adecuados

es decir para inicialmente estos datos

prueba=# select * from codigos;
codigo | orden
--------+-------
547 |
459 |
248 |
925 |
247 |
425 |
(6 rows)

despues del cluster tenia

codigo | orden
--------+-------
247 |
248 |
425 |
459 |
547 |
925 |
(6 rows)

luego aplique

update codigos set orden = default;

y resulto

prueba=# select * from codigos;
codigo | orden
--------+-------
247 | 1
248 | 2
425 | 3
459 | 4
547 | 5
925 | 6
(6 rows)

Ahora es el resultado esperado pero hay alguna forma de hacerlo sin cluster
con un par de sentencias como update y alguna cosa adicional.

por que tambien se puede resolver (de forma muy simple) con un cursor e
ir uno por uno poniendo los datos.
pero si hay otra forma mas eficiente. gracias

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Oswaldo Hernández 2007-06-15 14:35:23 Re: asignar valor creciente
Previous Message Patricio Cifuentes Ithal 2007-06-15 14:30:16 RE: Postgres and Mapserver timeout