動作検証で使っていたデータベース(PostgreSQL)のテーブルを本番公開する際に、溜まったゴミデータを削除し、合わせてシーケンスもリセットする機会があったので、その時使ったSQL文を備忘録として残しておく。
TRUNCATE TABLE table_name RESTART IDENTITY;
table_nameは適宜変更する必要があるが、上記のSQL文を実行するだけで一発でデータとシーケンスをリセットすることができた。
少し解説しておこう。
上記の例ではRESTART IDENTITYを付ける事でシーケンスもリセットしているが、以下のようにする事でシーケンスはそのままに、データのみを削除することができる。
TRUNCATE TABLE table_name;
また、DELETE文でも同様にデータの削除をおこなうことができるが、DELETE文はWHERE句で削除対象を選択できるのに対し、TRUNCATE TABLE文では全てのデータが削除対象となる。
全てのデータを削除する場合は、TRUNCATE TABLE文の方が処理速度が早い。