在Sequelize中添加具有起始值的自动递增整数

时间:2019-01-02 11:58:19

标签: node.js postgresql sequelize.js

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

我不会在现有表中添加新列,该列应该是一个自动递增的整数,其值从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。

有人知道解决此问题的好方法吗?

1 个答案:

答案 0 :(得分:0)

它已经存在于 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;
};