我在SQLite中有几个表,我试图弄清楚如何重置自动递增的数据库字段。
我读到DELETE FROM tablename
应该删除所有内容并将自动增量字段重置回0
,但当我这样做时,它只是删除数据。当插入新记录时,自动增量会从删除前的位置开始。
我的ident
字段属性如下:
*字段类型:integer
*字段标志:PRIMARY KEY
、AUTOINCREMENT
、UNIQUE
我在SQLite Maestro中构建了这个表,并且我也在SQLite Maestro中执行DELETE
语句,这有关系吗?
任何帮助将是伟大的。
6条答案
按热度按时间unftdfkk1#
试试这个:
SQLite Autoincrement
SQLite使用特殊的**
SQLITE_SEQUENCE
表**来跟踪表中最大的ROWID。每当创建包含AUTOINCREMENT列的普通表时,都会自动创建并初始化SQLITE_SEQUENCE
表。SQLITE_SEQUENCE表的内容可以使用普通的UPDATE、INSERT、和DELETE语句。但是对该表进行修改可能会扰乱AUTOINCREMENT密钥生成算法。在进行此类更改之前,请确保您知道自己在做什么。pengsaosao2#
您可以在-table中删除行后按更新顺序重置
yrwegjxp3#
如果你有Sqlite数据库浏览器,并且更倾向于GUI解决方案,你可以编辑sqlite_sequence表,其中field name是你的表的名称。双击字段seq的单元格,并在弹出的对话框中将值更改为0。
w1jd8yoj4#
如果您想通过内容提供程序重置每个RowId,请尝试以下操作
t0ybt7op5#
如果你正在使用python,并且你想从某个表中删除所有记录并重置AUTOINCREMENT。
你有这张table
所以如果你加了些唱片
6vl6ewon6#
我意识到这个答案来得很晚,但我正在构建一个.Net Maui应用程序,遇到了同样的问题。我使用sqlite-net-pcl nuget,通过简单地删除表并重新创建它来解决这个问题。主键被设置回1。