背景:项目使用mybatis框架,代码中有基于更新sql返回的更新条目数进行业务处理的逻辑,但是过程中遇到问题。
问题描述:更新sql返回的更新条目数总是不正确(sql执行成功,返回的更新条目数为0)。
产生原因:因为update的表中有触发器,更新操作语句成功了,但是触发器执行失败,所以返回的更新条目数为0。也就是说返回条目数表示最后一次数据库执行影响的条目数,这个“最后一次数据库执行”可能是更新sql,也可能是表上的触发器。
解决方案:可以尝试关闭对应表上的触发器的执行结果。
如在trigger中加入命令set nocount on。
问题总结:后续在符合上述情况的使用过程中,如果要基于更新条目数进行后续业务逻辑处理,一定要注意这种潜在问题。