Zend DB: как найти фактическое количество затронутых строк с помощью INSERT ON DUPLICATE KEY?

$db->update() возвращает затронутое количество строк.

Не существует метода Zend_DB для вставки... при обновлении двойного ключа..., поэтому следует использовать метод query():

$result = $db->query('INSERT INTO table(key, field) SELECT val1, val2 FROM table as t2 ON DUPLICATE KEY UPDATE field = VALUES(поле)');

Чтобы узнать количество затронутых или вставленных записей: $result->rowCount()

Но этот метод также подсчитывает все записи, которые были обновлены с тем же значением.

Мне нужно знать все фактически затронутые (измененные) записи.

Спасибо!


person Sewdn    schedule 10.03.2010    source источник


Ответы (1)


К сожалению, «При обновлении ключа дубликатов» заставляет ROW_COUNT() или mysql_rows_affected() сообщать о строках с несколькими обновлениями, это не количество обновленных строк UNIQUE.

person J Jorgenson    schedule 06.04.2010
comment
Две стратегии, которые я использую: A) следовать запросу «on-dup-key» с выбором таблицы с критериями, определяющими уникальную запись. B) сравнить количество записей до/после запроса «on-dup-key». - person J Jorgenson; 24.06.2011