[PostgreSQL]テーブルデータ全削除(truncate)時、Serial型フィールド値も同時にリセットしたい

truncate tableでデータ削除

テーブルデータを全て削除する場合、truncate tableステートメントを利用してデータを削除しますが、

truncate table テーブル名;

これだと、テーブルにSerial型フィールドが含まれている場合、採番値はリセットされないのでレコードをINSERTするとSerial列値はtruncate前の値+1となります。

別途setval()シーケンスをリセットすれば良いのですが、truncateと同時にリセットできないものでしょうか

RESTART IDENTITY

truncateと同時にSerial型フィールド値もリセットするには RESTART IDENTITYオプションを指定します。

truncate table テーブル名 RESTART IDENTITY;

これにより、レコードをINSERTするとSerial列値は初期値(例えば “1”)となります。