首页 > 解决方案 > 在 Sequelize 中添加具有起始值的自动递增整数

问题描述

经过一些研究,我似乎无法找到一种很好的方法来执行以下操作:

我不想在现有表中添加一个新列,它应该是一个自动递增的整数,从值 1000 开始。

我的迁移文件现在简单明了:

'use strict';

module.exports = {
  up: (queryInterface, Sequelize) => {
    return Promise.all([
      queryInterface.addColumn(
        'Orders',
        'orderRef',
        {
          autoIncrement: true,
          type: Sequelize.INTEGER
        }
      )
    ])
  },

  down: {...
  }
};

因此,这会将列添加到表中没有问题。但我似乎无法找到一种很好的方法来将值设置为从 1000 开始并从那里递增。

我知道我可以运行类似的查询,ALTER TABLE Orders AUTO_INCREMENT = 1000;但我非常感谢将其保留在 Sequelize 中。

我正在使用 PostgreSQL 数据库和 Sequelize 版本 4.38.1。

有谁知道解决这个问题的好方法?

标签: node.jspostgresqlsequelize.js

解决方案


它已经存在于 Sequelize 中。有一个名为 initialAutoIncrement 的选项。这会为 MySQL 中的表设置初始 AUTO_INCREMENT 值。

module.exports = (sequelize, DataTypes) => {
  const User = sequelize.define(
    'User',
    {
      id: {
        type: DataTypes.BIGINT(20),
        primaryKey: true,
        autoIncrement: true,
      },
      name: {
        type: DataTypes.STRING(500),
        allowNull: false,
      },
    },
    {
      initialAutoIncrement: 1000,
    }
  );

  return User;
};

推荐阅读