Postgresにてシーケンスをリセットする方法

Postgres#postgres#truncate#シーケンス

この記事は12年以上前に書かれたものです。内容が古くなっている可能性があります。

idフィールドをauto_incrementにしている場合、

truncateでテーブルを空にしても、id値が元に戻りません。

例えばusersというテーブルをtruncateした場合、

以下sqlを発行してください。

select * from users_id_seq;

そうするとlast_valueという値があると思いますが、

こちらを初期化してあげないと、truncateする前の値から

増えていってしまいます。

で、こちらの初期化方法は以下になります。

select setval ('users_id_seq', 1, false);

ちなみに以下のように番号をいじる事も可能です。

select setval ('users_id_seq', 10);

この場合は、次のid値は11から始まる事になります。