はじめに
シーケンスのリセットし忘れでテストデータ作成時にシーケンスの重複エラーがあり、リセットの方法を調査する機会がありましたのでそのときのメモを残しています。方法としては調査した限りだと、2通りあるのかなと思います。
- TRUNCATEによるシーケンスをリセット
- シーケンス関数(setval)によるリセット
方法1 TRUNCATEによるシーケンスをリセット
TRUNCATE TABLE <table_name> RESTART IDENTITY;
方法2 シーケンス関数(setval)によるシーケンスをリセット
SELECT SETVAL ('テーブル名_カラム名_seq', 1, false);
※第3引数をtrueにすると2番目のパラメータで指定した数値の次の値からシーケンスが振られます。
(上記の例だと、シーケンスは2が振られます)
おまけ シーケンスの値を確認
SELECT * FROM テーブル名_カラム名_seq;
#参考
- Postgresにてシーケンスをリセットする方法
- [https://salumarine.com/how-to-reset-sequence-by-truncate-table-in-postgresql/](PostgreSQL : truncate tableでシーケンスをリセットする方法)