【问题标题】:Adding auto incrementing integer with a starting value in Sequelize在 Sequelize 中添加具有起始值的自动递增整数
【发布时间】:2019-05-29 01:52:28
【问题描述】:

经过一些研究,我似乎无法找到一个很好的方法来做以下事情:

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

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

【问题讨论】:

  • 是的,伙计,Sequelize 似乎还没有实现来抽象这个动作,遗憾的是你必须运行那个查询。
  • 感谢您的回复。嗯,这看起来很奇怪。是的,要么运行该查询,要么创建 1000 次失败的插入尝试;)
  • 你找到解决办法了吗?
  • @md-shah no.. 我认为最简单的方法就是在服务器上运行此查询:ALTER TABLE Orders AUTO_INCREMENT = 1000;

标签: node.js postgresql sequelize.js


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    • 2020-09-01
    • 1970-01-01
    • 2014-07-20
    • 1970-01-01
    • 1970-01-01
    • 2016-02-19
    相关资源
    最近更新 更多