serial primary postgres column autoincrement auto_increment postgresql

postgresql - primary - Cómo convertir entero a serial



postgresql auto_increment primary key (1)

Tengo una tabla que tiene una columna de clave principal "gid" y su tipo es "Integer NOT NULL". Quiero convertirlo en "Serial NOT NULL" para poder insertar algunos valores en esta tabla. Utilicé los siguientes comandos para convertirlo en serie:

CREATE SEQUENCE test_table_gid_seq INCREMENT 1 MINVALUE 1 MAXVALUE 2147483648 START 1 CACHE 1; ALTER TABLE test_table ALTER COLUMN gid SET DEFAULT nextval(''test_table_gid_seq''::regclass);

Este comando convirtió el entero a serial. Pero mientras ingresé algunos datos a la tabla se produjo el siguiente error:

ERROR: el valor de la clave duplicada viola la restricción única "pk_test".

Por favor ayúdame a solucionar esto. ¿Hay algún otro método para convertir enteros a seriales?


Seleccione el valor máximo de la columna gid (max_gid):

SELECT max(gid) FROM test_table;

Y úselo como punto de inicio para la secuencia (probablemente, max_gid + 1):

ALTER SEQUENCE test_table_gid_seq RESTART WITH max_gid;