¿Hay alguna manera de restablecer la clave principal de una tabla de PostgreSQL para comenzar en 1 nuevamente en una tabla poblada?
Ahora mismo está generando números desde 1000000 en adelante. Quiero que todo se restablezca y comience a 1, manteniendo intactos todos mis datos existentes.
fuente
SELECT setval('table_id_seq', 10000)
SELECT setval('table_id_seq', 1)
, cuando inserto un nuevo registro, la identificación toma el valor 2, en lugar de 1. La solución de Paweł Gościcki funciona. (PostgreSQL 9.3)La mejor manera de restablecer una secuencia para comenzar con el número 1 es ejecutar lo siguiente:
ALTER SEQUENCE <tablename>_<id>_seq RESTART WITH 1
Entonces, por ejemplo, para la
users
tabla sería:ALTER SEQUENCE users_id_seq RESTART WITH 1
fuente
WITH 1
parámetro es redundante y se puede omitirseq
, puede por,pk
etc.) ... Pero es fácil en psql por\d my_table_name
. O verifique por SQL,SELECT * FROM pg_indexes WHERE tablename like '%my_table_name%'
@bluish en realidad, insertar un nuevo registro usando una clave primaria autoincrementada, es como usar una secuencia explícitamente de esta manera:
INSERT INTO MyTable (id, col1, ...) VALUES (MySeq.nextval(), val1, ...)
Por lo tanto, si desea que la primera identificación sea 1, debe establecer su secuencia en 0. Pero está fuera de los límites, por lo que debe usar la instrucción ALTER SEQUECE. Entonces, si tiene un campo de serie llamado número en el menú de su tabla, por ejemplo:
ALTER SEQUENCE menu_number_seq RESTART
Hará el trabajo a la perfección.
fuente