13

是否可以在 SQLite 数据库中重新设置自动增量列,如果可以,这是如何完成的?

IE。相当于DBCC CHECKIDENT ('MyTable', RESEED, 1)SQL Server 中的。

4

3 回答 3

23

在 SQLite 中有一个名为 SQLITE_SEQUENCE 的表,它跟踪RowId表中的最大值。您可以在此表上执行插入、更新和删除操作。例如,要模仿与 TRUNCATE TABLE 语句 SQL Server 类似的功能,您可以执行以下操作:

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

在上面的示例中,来自 MyTableName 的所有数据都被删除,并且通过从 SQLITE_SEQUENCE 表中删除值来重置自动增量 rowid。有关更多信息,请参阅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 回答
0

或者,您可以从 SQLite 数据库中导出 SQL 文件。然后编辑生成的 SQL 文件并将适当的条目更新为所需的 ID 或删除 INSERT 语句。在此之后创建一个新的空数据库并使用调整后的 SQL 文件为其播种。最高 ID + 1 将成为新条目的 ID...

通过这种方式,您可以决定保留哪些条目以及应该删除哪些条目,这是一种非破坏性甚至更灵活的方法。

对我来说,它很有效——干净又简单。;)

于 2021-11-23T17:13:45.893 回答