是否可以在 SQLite 数据库中重新设置自动增量列,如果可以,这是如何完成的?
IE。相当于DBCC CHECKIDENT ('MyTable', RESEED, 1)
SQL Server 中的。
是否可以在 SQLite 数据库中重新设置自动增量列,如果可以,这是如何完成的?
IE。相当于DBCC CHECKIDENT ('MyTable', RESEED, 1)
SQL Server 中的。
在 SQLite 中有一个名为 SQLITE_SEQUENCE 的表,它跟踪RowId
表中的最大值。您可以在此表上执行插入、更新和删除操作。例如,要模仿与 TRUNCATE TABLE 语句 SQL Server 类似的功能,您可以执行以下操作:
DELETE FROM MyTableName;
DELETE FROM SQLITE_SEQUENCE WHERE NAME = 'MyTableName';
在上面的示例中,来自 MyTableName 的所有数据都被删除,并且通过从 SQLITE_SEQUENCE 表中删除值来重置自动增量 rowid。有关更多信息,请参阅AUTOINCREMENT的文档。
DELETE
FROM MyTableName
select *
from SQLITE_SEQUENCE
update SQLITE_SEQUENCE
set seq = 0
where name ='MyTableName'
或者,您可以从 SQLite 数据库中导出 SQL 文件。然后编辑生成的 SQL 文件并将适当的条目更新为所需的 ID 或删除 INSERT 语句。在此之后创建一个新的空数据库并使用调整后的 SQL 文件为其播种。最高 ID + 1 将成为新条目的 ID...
通过这种方式,您可以决定保留哪些条目以及应该删除哪些条目,这是一种非破坏性甚至更灵活的方法。
对我来说,它很有效——干净又简单。;)