首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql_affected_rows()在“真实”替换为时返回1

问mysql_affected_rows()在“真实”替换为时返回1
EN

Stack Overflow用户
提问于 2011-04-12 22:32:16
回答 1查看 1.2K关注 0票数 2

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

每天晚上,我都会运行一个作业来插入和更新记录。我对每个操作都使用REPLACE INTO,因此它可以添加或替换现有行。

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

我知道其中一些“插入”是错误的,因为我跟踪了批处理更新开始和结束时的行数;表没有重复项可以丢弃该计数,而且我还验证了批处理更新之前存在的假“新”行。

这个表没有什么特别之处;一个类似的表的工作方式与使用相同代码时的行为相同。有没有人知道为什么mysql_affected_rows()会为一个真正是替换而不是插入的操作返回1?

EN

回答 1

Stack Overflow用户

发布于 2011-04-12 22:37:18

REPLACE INTO实际上执行的是删除,然后是插入,而不是更新。

您可能需要考虑使用INSERT…而不是使用重复的密钥更新语法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5636923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档