mysql_affected_rows()在'real'REPLLACE INTO上返回1

时间:2011-04-12 14:32:16

标签: mysql replace

我有一个带有一个主键的MySQL表。

每晚我都会找一份工作来插入和更新记录。我为每个操作使用REPLACE INTO,因此它将添加或替换现有行。

REPLACE INTO查询后,我调用mysql_affected_rows(),对于实际被替换的许多行返回计数为1而不是'new'(对于绝大多数被替换的行,它返回2 )。

我知道其中一些'插入'是错误的,因为我跟踪批量更新开始和结束时的行数;该表没有重复数据可以剔除该数量,另外我已经验证了批量更新前存在的虚假“新”行。

这张表没什么特别之处;类似的表的工作方式与使用相同的代码相同。任何人都有任何想法mysql_affected_rows()为一个真正替换而不是插入的操作返回1的原因吗?

1 个答案:

答案 0 :(得分:2)

REPLACE INTO实际上执行DELETE然后INSERT,而不是UPDATE。

您可能需要考虑使用INSERT ... ON DUPLICATE KEY UPDATE语法。