Как переместить столбец автоматического увеличения в базе данных SQLite?

Можно ли обновить столбец автоматического увеличения в базе данных SQLite, и если да, как это сделать?

т. Эквивалент DBCC CHECKIDENT ('MyTable', RESEED, 1) в SQL Server.

Ответ 1

В SQLite есть таблица с именем SQLITE_SEQUENCE, которая отслеживает наибольшее значение RowId, которое имеет таблица. Вы можете вставлять, обновлять и удалять эту таблицу. Например, чтобы имитировать аналогичную функциональность, такую ​​как оператор TRUNCATE TABLE SQL Server, вы могли бы что-то вроде:

DELETE FROM MyTableName;
DELETE FROM SQLITE_SEQUENCE WHERE NAME = 'MyTableName';

В приведенном выше примере все данные из MyTableName удаляются, а значение auto increment rowid равно reset путем удаления значения из таблицы SQLITE_SEQUENCE. Дополнительную информацию см. В документации для AUTOINCREMENT.

Ответ 2

DELETE 
FROM MyTableName

select *
from SQLITE_SEQUENCE

update SQLITE_SEQUENCE 
set seq = 0
where name ='MyTableName'