PostgreSQLでtruncate table
でテーブルを空っぽにする際、同時にIDなどのシーケンスをリセットして0
に戻すには、クエリにrestart identity
を付け加えます。
truncate table product restart identity;
実行例
-- テーブルを作る
create table product (id serial, name varchar);
-- シーケンスを2つ消費する
insert into product (name) values ('item1'), ('item2');
-- テーブルの内容
select * from product;
-- id | name
-- ----+-------
-- 1 | item1
-- 2 | item2
-- (2 rows)
-- テーブルを空っぽにしつつ、シーケンスをリセットする
truncate table product restart identity;
-- シーケンスを2つ消費する
insert into product (name) values ('item1'), ('item2');
-- テーブルを確認すると1から発番されなおされている
select * from product;
-- id | name
-- ----+-------
-- 1 | item1
-- 2 | item2
-- (2 rows)