我有一个带有一个主键的MySQL表。
每晚我都会找一份工作来插入和更新记录。我为每个操作使用REPLACE INTO
,因此它将添加或替换现有行。
在REPLACE INTO
查询后,我调用mysql_affected_rows()
,对于实际被替换的许多行返回计数为1而不是'new'(对于绝大多数被替换的行,它返回2 )。
我知道其中一些'插入'是错误的,因为我跟踪批量更新开始和结束时的行数;该表没有重复数据可以剔除该数量,另外我已经验证了批量更新前存在的虚假“新”行。
这张表没什么特别之处;类似的表的工作方式与使用相同的代码相同。任何人都有任何想法mysql_affected_rows()
为一个真正替换而不是插入的操作返回1的原因吗?
答案 0 :(得分:2)
REPLACE INTO实际上执行DELETE然后INSERT,而不是UPDATE。
您可能需要考虑使用INSERT ... ON DUPLICATE KEY UPDATE语法。