У меня есть таблица MySQL с одним первичным ключом.
Ночью я запускаю задание на вставку и обновление записей. Я использую REPLACE INTO
для каждой операции, поэтому она либо добавит, либо заменит существующую строку.
После запроса REPLACE INTO
я вызываю mysql_affected_rows()
, который возвращает счет 1 для многих фактически замененных строк, а не 'new' (он возвращает 2 для подавляющего большинства заменяемых строк).
Я знаю, что некоторые из этих «вставок» являются ложными, потому что я отслеживаю количество строк в начале и конце пакетного обновления; в таблице нет дубликатов, чтобы отбросить это количество, плюс я проверил, что искусственные «новые» строки существовали до пакетного обновления.
В этой таблице нет ничего особенного; похожая таблица работает так же, как и с тем же кодом. У кого-нибудь есть идеи, почему mysql_affected_rows()
возвращает 1 для операции, которая действительно является заменой, а не вставкой?