13

Is it possible to reseed an auto increment column in a SQLite database, and if so, how is this done?

ie. The equivalent of DBCC CHECKIDENT ('MyTable', RESEED, 1) in SQL Server.

4

3 に答える 3

23

RowIdSQLite には、テーブルの最大値を追跡する SQLITE_SEQUENCE という名前のテーブルがあります。このテーブルに対して挿入、更新、および削除を行うことができます。たとえば、SQL Server の TRUNCATE TABLE ステートメントと同様の機能を模倣するには、次のようにします。

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

上記の例では、MyTableName からのすべてのデータが削除され、SQLITE_SEQUENCE テーブルから値を削除することによって自動インクリメント行 ID がリセットされます。詳細については、 AUTOINCREMENTのドキュメントを参照してください。

于 2010-06-26T07:45:09.240 に答える
5
DELETE 
FROM MyTableName

select *
from SQLITE_SEQUENCE

update SQLITE_SEQUENCE 
set seq = 0
where name ='MyTableName'
于 2012-07-07T19:06:48.063 に答える