Как я могу получить это? Я знаю, что могу сделать это, получив COUNT всех строк перед выполнением этого запроса на вставку, а затем вычтя его из COUNT всех строк после выполнения этого запроса на вставку, но это нецелесообразно для больших баз данных. Я также нашел эту формулу на stackoverflow.com
(numberOfValuesInInsert * 2) - mysql_affected_rows()
но, похоже, это не работает для меня, так как я получаю затронутые строки = 1 независимо от того, обновляю ли я или вставляю новую строку
Вот мой код node.js, работающий внутри цикла FOR, поэтому после окончания цикла я получаю сумму затронутых строк:
var sql = "INSERT INTO classdata (id, siteid, name, staff, locationname, start, end) VALUES ?
ON DUPLICATE KEY UPDATE
siteid=VALUES(siteid), name=VALUES(name), staff=VALUES(staff), locationname=VALUES(locationname), start=VALUES(start), end=VALUES(end)";
var values = [[id, siteId, name, staff, locationName, start,end]];
connection.query(sql, [values],function(err, results) {
if (!err) {console.log(new Date() + " : New data sucessfully inserted into classdata table. Affected rows: " + results.affectedRows);}});
affectedrows+= results.affectedRows;
И он всегда печатает Затронутые строки: 1, независимо от того, вставлена ли запись или обновлена. И я прочитал здесь, что он должен возвращать 2 для каждой обновленной записи и 1 для вставленной. Получение количества строк, вставленных для ON DUPLICATE ОБНОВЛЕНИЕ КЛЮЧА множественная вставка?
У меня есть один ПК, это поле "id", если это что-то значит для вас.