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”)となります。