Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como adicionar várias linhas usando Insert ... ON DUPLICATE KEY UPDATE usando knex


Eu escrevi este código para inserir/atualizar uma única linha como um objeto ou várias linhas como uma matriz de objetos:
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(", "));
}