安排如何在多个唯一对中使用一列

时间:2019-03-26 16:16:32

标签: node.js sequelize.js

我正在使用sequelize 3.30.4。

我知道如何使用

label: {
    type: DataTypes.STRING,
    allowNull: false,
    unique: true,
}

我知道如何使用

catalogId: {
    type: DataTypes.STRING,
    allowNull: false,
    unique: 'label',
},
label: {
    type: DataTypes.STRING,
    allowNull: false,
    unique: 'label',
}

我正在寻找一个解决方案,其中catalogId是标签和引用唯一对的一部分。 我不能使用单个uniqu约束,它会通过更改引用来允许重复标签,反之亦然

catalogId: {
    type: DataTypes.STRING,
    allowNull: false,
    unique: [ 'label', 'reference' ],
},
label: {
    type: DataTypes.STRING,
    allowNull: false,
    unique: 'label',
}
reference: {
    type: DataTypes.STRING,
    allowNull: false,
    unique: 'reference',
}

感谢您的帮助或建议。

1 个答案:

答案 0 :(得分:0)

您可以添加单独的迁移以添加唯一约束。

module.exports = {
  up: (queryInterface, Sequelize) => {
    queryInterface.addConstraint('tableName', ['column1', 'column2'], {
      type: 'unique',
      name: 'constraintmame',
    });
  },

  down: (queryInterface, Sequelize) => {
    queryInterface.removeConstraint('tableName', 'constraintName');
  },
};

这样,您可以在多个约束中使用column1column2或任何此类列。