こうこく
作 ▸

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になります。

この記事に何かあればこちらまで (非公開)