我将sqlite3用作数据库,并使用“ sequelize”库进行处理。 我有一个模块,想要在截断它后重设autoIncrement主键。
var logModule = db.logModule()
logModule.destroy({
where:{},
truncate: true
})
但是我发现这种方式只是清除表中的所有记录,而没有将autoIncrement主键重置为零。
清除表中的所有记录后,有什么方法可以重置主键吗?
答案 0 :(得分:1)
您应该传递restartIdentity: true
来破坏/截断序列化方法。
models[modelName]
.destroy({ truncate: true, restartIdentity: true })
restartIdentity
-仅与TRUNCATE结合使用。自动重新启动被截断表的列所拥有的序列。
答案 1 :(得分:0)
使用它;
Object.values(sequelize.models).map(function(model) {
return model.destroy({ truncate: true });
});
答案 2 :(得分:0)
SQLite
使用特殊的ROWID
表跟踪表曾经拥有的最大SQLITE_SEQUENCE
。每当创建包含SQLITE_SEQUENCE
列的普通表时,都会自动创建并初始化AUTOINCREMENT
表。
销毁表后,您必须执行查询以重置表的SQE
值
sequelize.query("UPDATE SQLITE_SEQUENCE SET SEQ=0 WHERE NAME='log_module_table_name'");