PostgreSQLでシーケンスを設定/リセットする方法
(必ずしもmax(id)
である必要はありません 。
-
あなたが質問に持っている簡単な方法があります。
setval()
を使用して、任意の番号で開始するようにシーケンスを設定できます。 :SELECT setval('tbl_id_seq');
-
次に、
ALTER SEQUENCE
を使用した標準のSQLの方法があります。 同じことをする:ALTER SEQUENCE myseq RESTART WITH 1;
-
デフォルトの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
-
また、TRUNCATEを使用してテーブルを空にする別の方法があります:
TRUNCATE foo RESTART IDENTITY;
ALTER SEQUENCE foo_id_seq RESTART;
を暗黙的に実行します