Manieren om een reeks in PostgreSQL in te stellen/te resetten
(niet noodzakelijkerwijs naar max(id)
).
-
Er is de eenvoudige manier die je hebt in de vraag. U kunt de reeks zo instellen dat deze op een willekeurig getal begint met
setval()
:SELECT setval('tbl_id_seq');
-
Dan is er nog de standaard SQL-manier met
ALTER SEQUENCE
hetzelfde doen:ALTER SEQUENCE myseq RESTART WITH 1;
-
Als u uw reeksen wilt herstarten op andere nummers dan de standaard 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
-
En er is een andere manier, wanneer u een tafel leegmaakt met TRUNCATE:
TRUNCATE foo RESTART IDENTITY;
Voert impliciet
ALTER SEQUENCE foo_id_seq RESTART;