Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment ajouter plusieurs lignes à l'aide de Insert ... ON DUPLICATE KEY UPDATE à l'aide de knex

J'ai écrit ce code pour insérer/mettre à jour soit une seule ligne en tant qu'objet, soit plusieurs lignes en tant que tableau d'objets :

function insertOrUpdate(knex: Knex, tableName: string, data: any) {
  const firstData = data[0] ? data[0] : data;
  return knex.raw(knex(tableName).insert(data).toQuery() + " ON DUPLICATE KEY UPDATE " +
    Object.getOwnPropertyNames(firstData).map((field) => `${field}=VALUES(${field})`).join(", "));
}