Начини за задаване/нулиране на последователност в PostgreSQL
(не е задължително към max(id)
).
-
Това е простият начин, който имате във въпроса. Можете да настроите последователността да започва от произволно число с
setval()
:SELECT setval('tbl_id_seq');
-
След това има стандартен SQL начин с
ALTER SEQUENCE
прави същото:ALTER SEQUENCE myseq RESTART WITH 1;
-
Ако искате да рестартирате своите поредици с числа, различни от 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
-
Има и друг начин, когато изпразните таблица с TRUNCATE:
TRUNCATE foo RESTART IDENTITY;
Неявно изпълнява
ALTER SEQUENCE foo_id_seq RESTART;