Как повторно заполнить столбец с автоинкрементом в базе данных SQLite? - PullRequest
12 голосов
/ 26 июня 2010

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

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

Ответы [ 2 ]

22 голосов
/ 26 июня 2010

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

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

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

3 голосов
/ 07 июля 2012
DELETE 
FROM MyTableName

select *
from SQLITE_SEQUENCE

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