Cara menyetel/mengatur ulang urutan di PostgreSQL
(tidak harus max(id)
).
-
Ada cara sederhana yang Anda miliki dalam pertanyaan. Anda dapat mengatur urutan untuk memulai dari angka arbitrer dengan
setval()
:SELECT setval('tbl_id_seq');
-
Lalu ada cara SQL standar dengan
ALTER SEQUENCE
melakukan hal yang sama:ALTER SEQUENCE myseq RESTART WITH 1;
-
Jika Anda ingin memulai kembali urutan Anda pada angka selain dari default 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
-
Dan ada cara lain, ketika Anda mengosongkan tabel dengan TRUNCATE:
TRUNCATE foo RESTART IDENTITY;
Secara implisit mengeksekusi
ALTER SEQUENCE foo_id_seq RESTART;