SQLite Truncate Table

В SQLite нет команды TRUNCATE TABLE, но вы можете использовать команду SQLiteDELETEDELETE для удаления всех данных из существующей таблицы.

Синтаксис

Базовый синтаксис команды DELETE выглядит следующим образом:

sqlite> DELETE FROM table_name;

Однако этот метод не позволяет сбросить значение автоинкремента в ноль.

Если вы хотите сбросить значение автоинкремента в ноль, можно использовать следующий метод:

sqlite> DELETE FROM sqlite_sequence WHERE name = 'table_name';

Когда база данных SQLite содержит столбец с автоинкрементом, автоматически создается таблица с именем sqlite_sequence. Эта таблица содержит два столбца: name и seq. Столбец name хранит имя таблицы, в которой находится столбец с автоинкрементом, а seq хранит текущий номер последовательности (номер следующей записи равен текущему номеру последовательности плюс 1). Если вы хотите сбросить номер последовательности для конкретного столбца с автоинкрементом в ноль, вам просто нужно изменить таблицу sqlite_sequence.

UPDATE sqlite_sequence SET seq = 0 WHERE name = 'table_name';

Примеры

Предположим, таблица COMPANY содержит следующие записи:

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

Ниже приведен пример удаления записей из вышеуказанной таблицы:

SQLite> DELETE FROM sqlite_sequence WHERE name = 'COMPANY';
SQLite> VACUUM;

Теперь записи в таблице COMPANY полностью удалены, и использование оператора SELECT не даст никакого вывода.

Другие расширения