我使用sqlite3作为我的数据库,并使用sequelize
库来处理它。我有一个模块,并希望在截断它后重置autoIncrement
主键。
var logModule = db.logModule()
logModule.destroy({
where:{},
truncate: true
})
但是我发现这种方法只是清除了表中的所有记录,并没有将autoIncrement
的主键重置为零。
在清除表中的所有记录后,是否有方法重置主键?
3条答案
按热度按时间egmofgnx1#
你应该传递
restartIdentity: true
来销毁/截断sequelize中的方法。restartIdentity
-仅与TRUNCATE结合使用。自动重新启动被截断表的列所拥有的序列。对于sequelize为sqlite生成的id字段,这并不像预期的那样工作。
你必须显式地调用SQL:
djmepvbi2#
SQLite
使用特殊的SQLITE_SEQUENCE
表来跟踪表中最大的ROWID
。每当创建包含AUTOINCREMENT
列的普通表时,都会自动创建和初始化SQLITE_SEQUENCE
表。销毁表之后,必须执行一个查询来重置表的
SQE
值0yycz8jy3#
用这个;