Formas de configurar/restablecer una secuencia en PostgreSQL
(no necesariamente a max(id)
).
-
Ahí está la forma simple que tienes en la pregunta. Puede configurar la secuencia para que comience en un número arbitrario con
setval()
:SELECT setval('tbl_id_seq');
-
Luego está la forma estándar de SQL con
ALTER SEQUENCE
haciendo lo mismo:ALTER SEQUENCE myseq RESTART WITH 1;
-
Si desea reiniciar sus secuencias en números distintos al predeterminado 1:
CREATE TABLE foo(id serial, a text); -- creates sequence "foo_id_seq" INSERT INTO foo(a) VALUES('a'); -- seq. starts with --> 1 ALTER SEQUENCE foo_id_seq START WITH 10; -- doesn't restart sequence INSERT INTO foo(a) VALUES('b'); --> 2 ALTER SEQUENCE foo_id_seq RESTART; -- restarts sequence INSERT INTO foo(a) VALUES('c'); --> 10
-
Y hay otra forma, cuando vacías una tabla con TRUNCATE:
TRUNCATE foo RESTART IDENTITY;
Ejecuta implícitamente
ALTER SEQUENCE foo_id_seq RESTART;