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 SEQUENCEmelakukan 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;