node.js - 如何使用sequelize重置autoIncrement主键?

标签 node.js sqlite sequelize.js

我使用 sqlite3 作为我的数据库,并使用 sequelize 库来处理它。 我有一个模块,想要在截断后重置 autoIncrement 主键。

    var logModule = db.logModule()
    logModule.destroy({

        where:{},
        truncate: true
    })

但我发现这种方式只是清除了表中的所有记录,并没有将 autoIncrement 主键重置为零。

清除表中的所有记录后,有什么方法可以重置主键吗?

最佳答案

您应该传递restartIdentity: true来销毁/截断sequelize中的方法。

   models[modelName]
     .destroy({ truncate: true, restartIdentity: true })

restartIdentity - 仅与 TRUNCATE 结合使用。自动重新启动被截断表的列所拥有的序列。

对于 sqlite 的 Sequelize 生成的 id 字段,这不能按预期工作。

你必须explicitly invoke the SQL :

await sequelize.query(`DELETE FROM "sqlite_sequence" WHERE "name" = 'table_name'`)

关于node.js - 如何使用sequelize重置autoIncrement主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55966627/

相关文章:

javascript - 使用 React 和 Webpack 添加 Favicon

node.js - Node.js 如何同时异步和单线程?

mysql - 即将发生的事件的日期更改的 SQL 查询

node.js - 在 Controller 中使用 api 请求 header 的有效方法,Node Express Js 中的模型

node.js - express 静态服务index.html 如何拒绝呢?

node.js - 按 id 删除记录?

android.database.sqlite.SQLiteException : near "0": syntax error: ALTER TABLE data ADD COLUMN 0 INTEGER

sql - 高效的SQL统计最近X行中的事件

python - 如何为作为架构附加的 SQLite 数据库设置 Alembic?

postgresql - 从 sequelize 原始查询返回更新的值