我有一个具有一个主键的MySQL表。
每天晚上,我都会运行一个作业来插入和更新记录。我对每个操作都使用REPLACE INTO,因此它可以添加或替换现有行。
在REPLACE INTO查询之后,我调用了mysql_affected_rows(),对于实际被替换而不是“新建”的许多行,它返回的计数为1(对于被替换的绝大多数行,它返回2)。
我知道其中一些“插入”是错误的,因为我跟踪了批处理更新开始和结束时的行数;表没有重复项可以丢弃该计数,而且我还验证了批处理更新之前存在的假“新”行。
这个表没有什么特别之处;一个类似的表的工作方式与使用相同代码时的行为相同。有没有人知道为什么mysql_affected_rows()会为一个真正是替换而不是插入的操作返回1?
发布于 2011-04-12 22:37:18
REPLACE INTO实际上执行的是删除,然后是插入,而不是更新。
您可能需要考虑使用INSERT…而不是使用重复的密钥更新语法。
https://stackoverflow.com/questions/5636923
复制相似问题