¿Cómo reiniciar los valores autoincrementables de una columna en una tabla?

publicado por: Anonymous

Tengo una tabla en postgresql con las siguientes columnas

   Columna   |          Tipo          |
-------------+------------------------+
 id_empleado | integer                |
 nombre      | character varying(255) |
 apellido    | character varying(255) | 
 id_jefatura | integer                | 

La columna id_empleado es autoincrementable y tiene valores que saltan entre si, por ejemplo del id 18 se salta al 32, y así.

Lo que quiero es actualizar ese columna, para que reinicie el id, y suba incrementalmente el valor, para no tener saltos de id tan altos.

Por ejemplo:

id_empleado  |          nombre        |
-------------+------------------------+
 18          | Pedro                  |
 32          | Pablo                  |
 34          | Luis                   | 
 45          | Andres                 | 

Deberia quedar:

id_empleado  |          nombre        |
-------------+------------------------+
 1           | Pedro                  |
 2           | Pablo                  |
 3           | Luis                   | 
 4           | Andres                 | 

solución

Esta instruccion podria funcionar:

ALTER SEQUENCE seq RESTART WITH 1;
UPDATE tu_tabla SET id_empleado=nextval('seq');

pero lo recomendable sería primero mover los ids a un indice muy alto y después regresarlos a uno para evitar la duplicidad de los ids:

ALTER SEQUENCE seq RESTART WITH 1;
UPDATE tu_tabla SET id_empleado=1000000+ nextval('seq');

Y después de esto ejecutar el primer script.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *