Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So fügen Sie mehrere Zeilen mit Insert ... ON DUPLICATE KEY UPDATE mit knex hinzu

Ich habe diesen Code geschrieben, um entweder eine einzelne Zeile als Objekt oder mehrere Zeilen als Array von Objekten einzufügen/aktualisieren:

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(", "));
}