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;