You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行UPDATE语句后出现两次「x行受影响」提示是什么原因?

UPDATE语句输出两次受影响行数的原因

这是MySQL执行UPDATE操作的常见输出,对应两种不同的计数逻辑,和你预期的159行修改目标并不冲突:

  • 第一种是最常见的场景:你看到的两组数分别是匹配行数和实际修改行数
    绝大多数MySQL客户端执行完UPDATE后都会默认输出如下格式的统计:

    Rows matched: 159 Changed: 159 Warnings: 0
    其中Rows matched统计的是完全符合你的UPDATE语句WHERE过滤条件的总行数,Changed统计的是实际发生了数据修改的行数。如果符合WHERE条件的行的对应字段值已经和你SET的目标值完全相同,就会出现匹配行数大于修改行数的情况。你这里两个值都是159,说明所有匹配到的行都完成了修改,完全符合你的预期,并不是语句重复执行了两次。

  • 第二种场景:目标表配置了触发式逻辑
    如果你看到的是两个独立的X rows affected提示,没有上述的matched/changed标识,说明你修改的表上配置了UPDATE相关的触发器,UPDATE修改159行的操作触发了触发器内的额外写操作,第二次返回的数值是触发器内部执行写操作的受影响行数。
    你可以执行SHOW TRIGGERS LIKE '对应表名';命令查询该表的触发器配置验证这个情况。

内容的提问来源于stack exchange,提问作者Hopper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 10:36:03