How to define unique index on multiple columns in sequelize

前端 未结 6 2124
半阙折子戏
半阙折子戏 2020-12-13 06:50

How do I define a unique index on a combination of columns in sequelize. For example I want to add a unique index on user_id, count and name.

var Tag = sequ         


        
6条回答
  •  伪装坚强ぢ
    2020-12-13 07:08

    Sequelize composite unique (manual)

    module.exports = {
      up: (queryInterface, Sequelize) => {
        return queryInterface.createTable('Model', {
          id: {
            allowNull: false,
            autoIncrement: true,
            primaryKey: true,
            type: Sequelize.INTEGER
          },
          fieldOne: {
            type: Sequelize.INTEGER,
            unique: 'uniqueTag',
            allowNull: false,
            references: {
              model: 'Model1',
              key: 'id'
            },
            onUpdate: 'cascade',
            onDelete: 'cascade'
          },
          fieldsTwo: {
            type: Sequelize.INTEGER,
            unique: 'uniqueTag',
            allowNull: false,
            references: {
              model: 'Model2',
              key: 'id'
            },
            onUpdate: 'cascade',
            onDelete: 'cascade'
          },
          createdAt: {
            allowNull: false,
            type: Sequelize.DATE
          },
          updatedAt: {
            allowNull: false,
            type: Sequelize.DATE
          }
        })
        .then(function() {
          return queryInterface.sequelize.query(
            'ALTER TABLE `UserFriends` ADD UNIQUE `unique_index`(`fieldOne`, `fieldTwo`)'
          );
        });
      },
      down: (queryInterface, Sequelize) => {
        return queryInterface.dropTable('Model');
      }
    };
    

提交回复
热议问题