Как переместить столбец автоматического увеличения в базе данных 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'