Sätt att ställa in/återställa en sekvens i PostgreSQL
(inte nödvändigtvis till max(id) ).
-
Det är det enkla sättet du har i frågan. Du kan ställa in sekvensen så att den börjar på ett godtyckligt tal med
setval():SELECT setval('tbl_id_seq'); -
Sedan finns det standard-SQL-sättet med
ALTER SEQUENCEgör samma sak:ALTER SEQUENCE myseq RESTART WITH 1; -
Om du vill starta om dina sekvenser med andra nummer än standard 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 -
Och det finns ett annat sätt, när du tömmer en tabell med TRUNCATE:
TRUNCATE foo RESTART IDENTITY;Exekverar implicit
ALTER SEQUENCE foo_id_seq RESTART;