تابستون داره تموم میشه ها، فرصت‌ها محدودن کلی آفر جذاب در کمپین تابستون🔥👇
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ محسن محمدخانی
شخصی سازی شروع فیلد primaryKey و autoIncrement و افزایش سفارشی بوسیله ی migration  ‌های sequelizeJS
جامعه نود جی اس ایجاد شده در ۲۹ مرداد ۱۳۹۹

سلام 
کد زیر یک migration برای sequelizeJS هستش که با دستور  npx sequelize-cli db:migrate  اجرا میشه
من می‌خوام مقدار usr_id که primaryKey و autoIncrement  هستش از 1000 شروع بشه و هر رکوردی که اضافه میشه مقدار 2 تا 2 تا بره جلو مثلا رکورد اول 100 , دوم 1002 و سوم 1004 
میشه بصورت دستی query در محیط mysql زد من می‌خوام بوسیله migration  انجام بشه.

module.exports = {
  up: (queryInterface, Sequelize) => {
    return queryInterface.createTable("users", {
      usr_id: {
        type: Sequelize.INTEGER.UNSIGNED,
        field: "usr_id",
        autoIncrement: true,
        primaryKey: true,
        allowNull: false,
      },
      usr_mobile: {
        type: Sequelize.STRING(13),
        field: "usr_mobile",
        allowNull: false,
      },
      usr_login_code: {
        type: Sequelize.STRING(6),
        field: "usr_login_code",
        allowNull: false,
      },
      usr_last_login_at: {
        type: Sequelize.DATE,
        field: "usr_last_login_at",
        allowNull: true,
      },
      usr_created_at: {
        type: Sequelize.DATE,
        field: "usr_created_at",
        allowNull: false,
      },
      usr_updated_at: {
        type: Sequelize.DATE,
        field: "usr_updated_at",
        allowNull: true,
      },
      usr_deleted_at: {
        type: Sequelize.DATE,
        field: "usr_deleted_at",
        allowNull: true,
      },
    });
  },
  down: (queryInterface, Sequelize) => {
    return queryInterface.dropTable("users");
  },
};

 

سلام. برای پیاده سازی این فکر می‌کنم باید از کوئری‌های مجزا بعد از Migration استفاده کنید.

module.exports = {
  up: function (migration, DataTypes) {
    migration.migrator.sequelize.query('ALTER TABLE my_table ADD PRIMARY KEY(id)');
  }
}

و اینکه تعداد افزایش‌ها هم 2 تایی باشه باید از SQL کمک بگیرد و این دستور رو اجرا کنید.

SET GLOBAL auto_increment_increment=1;

این دستور تمامی auto increment‌ها تحت تاثیر قرار میده.

کیوان علی محمدی ۰۲ شهریور ۱۳۹۹، ۰۹:۲۷