upsert如何在多个键上工作? [续集]

问题描述

假设我有一个模型:

const Player = db.define('player',{
  // The primary key of the table.
  playerId: {
    type: DataTypes.INTEGER(11),primaryKey: true,},playerName: DataTypes.STRING(11),teamId: {
    type: Sequelize.STRING(32),allowNull: false,references: {
      model: 'team',key: 'teamId',}
  },managerId: {
    type: Sequelize.STRING(32),allowNull: true,references: {
      model: 'manager',key: 'managerId',});

如果我愿意

Player.upsert(
  {
    teamId: p.teamId,managerId: p.managerId,playerName: p.name
  }
)

将创建新的播放器,还是将更新具有相同的teamIdmanagerId的现有播放器?
我怎么知道upsert在寻找哪些值以便检查条目是否已经存在?它只查找primaryKey,还是所有foreignKeys吗?

解决方法

它寻找主键值,就像许多DBMS中的类似SQL命令一样。 所有其他字段可能都相等,但PK旨在将一个记录与另一个记录区分开来是唯一的。