2017-02-13 4 views
5

列の組み合わせに一貫性のあるインデックスを定義するにはどうすればよいですか。たとえば、user_id、count、およびnameにユニークなインデックスを追加したいとします。sequelizeで複数の列に一意のインデックスを定義する方法

var Tag = sequelize.define('Tag', { 
     id: { 
      type: DataTypes.INTEGER(11), 
      allowNull: false, 
      primaryKey: true, 
      autoIncrement: true 
     }, 
     user_id: { 
      type: DataTypes.INTEGER(11), 
      allowNull: false, 
     }, 
     count: { 
      type: DataTypes.INTEGER(11), 
      allowNull: true 
     }, 
     name: { 
      type: DataTypes.STRING, 
      allowNull: true, 
     }) 

答えて

11

あなたはこのdocにhttp://docs.sequelizejs.com/en/latest/docs/models-definition/#indexes

を参照することができ、以下に示すようにあなたのdefinationを変更する必要がありますし、受け入れられた1以下のコードを試し、その後動作しない場合

var Tag = sequelize.define('Tag', { 
    id: { 
     type: DataTypes.INTEGER(11), 
     allowNull: false, 
     primaryKey: true, 
     autoIncrement: true 
    }, 
    user_id: { 
     type: DataTypes.INTEGER(11), 
     allowNull: false, 
    }, 
    count: { 
     type: DataTypes.INTEGER(11), 
     allowNull: true 
    }, 
    name: { 
     type: DataTypes.STRING, 
     allowNull: true, 
    } 
}, 
{ 
    indexes: [ 
     { 
      unique: true, 
      fields: ['user_id', 'count', 'name'] 
     } 
    ] 
}) 
+0

ありがとう! – lboyel

1

同期を呼び出します。それは私の場合は受け入れられたものではなく、私のために働いた。

var Tag = sequelize.define('Tag', { 
     id: { 
      type: DataTypes.INTEGER(11), 
      allowNull: false, 
      primaryKey: true, 
      autoIncrement: true 
     }, 
     user_id: { 
      type: DataTypes.INTEGER(11), 
      allowNull: false, 
      unique: 'uniqueTag', 
     }, 
     count: { 
      type: DataTypes.INTEGER(11), 
      allowNull: true, 
      unique: 'uniqueTag', 
     }, 
     name: { 
      type: DataTypes.STRING, 
      allowNull: true, 
      unique: 'uniqueTag', 
     }) 
1

私は最終的に私は次のコードを介して固定8.9.4 MySQLの、Sequelize(4.10.2)とNodeJs で複数に の列が、何も仕事を複合ユニーク制約を適用するために同じ問題を持っています。

queryInterface.createTable('actions', { 
    id: { 
     type: Sequelize.INTEGER, 
     primaryKey: true, 
     autoIncrement: true 
    }, 
    system_id: { 
     type: Sequelize.STRING, 
     unique: 'actions_unique', 
    }, 
    rule_id: { 
     type: Sequelize.STRING, 
     unique: 'actions_unique', 
    }, 
    plan_id: { 
     type: Sequelize.INTEGER, 
     unique: 'actions_unique', 
    } 
}, { 
    uniqueKeys: { 
     actions_unique: { 
      fields: ['system_id', 'rule_id', 'plan_id'] 
     } 
    } 
}); 
関連する問題