mysql中update语句返回什么

文 / @WordPress主题

MySQL中update语句的返回结果是一个让人比较困惑的问题。根据官方文档,update语句应该返回被影响的行数,也就是执行update操作后,数据库表中有多少行数据被修改了。但是,实际在应用中有很多情况下,返回的结果并不符合预期,这让人感到很困惑。

根据官方文档,如果想返回受影响的记录数,可以在连接MySQL时指定url中添加useAffectedRows=true参数。这样,update语句执行后,就会返回受影响的行数,而不是匹配的行数。需要说明的是,如果连接MySQL时没有指定useAffectedRows=true参数,则默认情况下update语句返回匹配的行数。

具体实现方法是,在MySQL的数据连接url参数中加入useAffectedRows=true即可,如下所示:

jdbc.url=jdbc:mysql://localhost:3306/ssm?useAffectedRows=true

这样,当执行update语句时,就可以返回受影响的记录数了。

通过分析MySQL的源代码,我们可以了解到,在建立connection的时候,会将useAffectedRows=true这个参数设置为connection的属性。使用ConnectionImpl的构造函数为例,该构造函数中将useAffectedRows的值初始化设置了connection。在MysqlIO中,在执行doHandshake方法时,也会设置useAffectedRows的选项。

从MySQL的响应数据包中可以看到,useAffectedRows为true和false时,MySQL服务器的返回值是不同的。最后jdbc取的返回结果,就是数据包中的AffectedRows的值。直接从MySQL的结果中获取,jdbc只是对结果进行了一些解析和过滤。

综上所述,MySQL中update语句返回的结果是受影响的记录数,而不是匹配的行数。如果要返回匹配的行数,可以不用指定useAffectedRows=true参数。

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。