Sposoby ustawiania / resetowania sekwencji w PostgreSQL
(niekoniecznie do max(id)
).
-
W pytaniu jest prosty sposób. Możesz ustawić sekwencję, aby zaczynała się od dowolnej liczby za pomocą
setval()
:SELECT setval('tbl_id_seq');
-
Następnie jest standardowy sposób SQL z
ALTER SEQUENCE
robi to samo:ALTER SEQUENCE myseq RESTART WITH 1;
-
Jeśli chcesz ponownie uruchomić sekwencje przy numerach innych niż domyślne 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
-
I jest inny sposób, kiedy opróżnisz stół za pomocą TRUNCATE:
TRUNCATE foo RESTART IDENTITY;
Niejawnie wykonuje
ALTER SEQUENCE foo_id_seq RESTART;