作 ▸
SQLiteでテーブルの内容を全部消して連番もリセットする
MySQLとかSQLServerでは、TRUNCATE を使うとテーブルの内容を全消し&連番リセットできて便利だったのですが、SQLiteには TRUNCATE が無かった。
とりあえず my_table というテーブルの中身を消して連番リセットしたいだけなら、以下でOK。必要なら別途 VACUUM する。
DELETE FROM my_table;
DELETE FROM sqlite_sequence WHERE name = 'my_table';SQLiteは sqlite_sequence というテーブルに、テーブル名と連番の現在値の組み合わせを持ってます。
これを消すと次の連番は現存するレコードの最高値から決定されるので、全消しした場合は次の連番が1になります。
キリウ君が読まないノート