gpt4 book ai didi

mysql - Sequelize bulkCreate : updateOnDuplicate

转载 作者:行者123 更新时间:2023-11-30 21:57:40 28 4
gpt4 key购买 nike

我正在向数据库中输入大量数据,并且正在使用此模型将 updateOnDuplicate 选项应用于 bulkCreate。所以我无法在这里验证理智。我的问题是,因为我有一个唯一值,它也可用于 updateOnDuplicate 条件,或者只是用于检查重复项的主键。

问题是我在 bulkCreate 表中的主键是 id,它是自动增量的。我的模型中有多个唯一值,并且不希望仅通过检查主键来更新任何内容。它是否考虑了所有唯一性,还是我必须手动进行?

    customer_id: {
type: DataTypes.BIGINT,
allowNull: false,
unique: true
},
shop_id: {
type: DataTypes.INTEGER(10).UNSIGNED,
allowNull: false,
unique: true,
references: {
model: 'shop',
key: 'id'
}
},
email: {
type: DataTypes.STRING(255),
allowNull: false
},
others: {
type: DataTypes.STRING(255),
allowNull: false
},{
timestamps: false,
createdAt: false,
updatedAt: false,
tableName: 'customers'
}

最佳答案

根据我的观点,bulkCreate 将仅作用于 id(不应考虑唯一约束)。

因此,如果您尝试使用 bulkCreate 插入重复值(在具有唯一值约束的列中),那么它将抛出错误并且不会插入任何记录。因此,在这种情况下,您必须手动进行检查。

所以我的建议是先检查唯一值,然后再使用 bulkCreate。

或者

遍历记录并为每条记录调用 findOrCreate 方法,并将唯一值列放在 where 条件中。这将比 bulkCreate 花费更多时间,但更具体。

Model.findOrCreate({
where: {
customer_id: cust_val,
shop_id: shop_val
}
}).spread(function(record, created){
if (created){
console.log('New Record Created');
}
});

关于mysql - Sequelize bulkCreate : updateOnDuplicate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44538089/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com