php sqlsrv 执行update很诡异,受影响行数有返回,数据无变化
update表Aset字段A='0'where字段A='1'and字段B=‘001’update表Aset字段A='0'where字段A='1'and字段B=‘002’同...
update 表A set 字段A = '0' where 字段A = '1' and 字段B=‘001’
update 表A set 字段A = '0' where 字段A = '1' and 字段B=‘002’
同样条件,dml语句变成dql语句都有返回值。
直接从sql server中执行这两个语句都正常,但是放到php中执行,第一个语句有返回受影响行,并且数据库中数据有变化,但第二个语句有返回受影响行,但是实际数据库中数据无变化。
第二句语句应该受影响行比如是1000行,但是php返回的受影响行值可能只有600,而且数据库中数据完全没有变化。
求解啊
哦对
执行语句用的php函数是$res=sqlsrv_query($this->conn,$sql);
查看返回行数用的函数是sqlsrv_rows_affected($res); 展开
update 表A set 字段A = '0' where 字段A = '1' and 字段B=‘002’
同样条件,dml语句变成dql语句都有返回值。
直接从sql server中执行这两个语句都正常,但是放到php中执行,第一个语句有返回受影响行,并且数据库中数据有变化,但第二个语句有返回受影响行,但是实际数据库中数据无变化。
第二句语句应该受影响行比如是1000行,但是php返回的受影响行值可能只有600,而且数据库中数据完全没有变化。
求解啊
哦对
执行语句用的php函数是$res=sqlsrv_query($this->conn,$sql);
查看返回行数用的函数是sqlsrv_rows_affected($res); 展开
1个回答
展开全部
1.最大执行时间问题,解决方法:分批处理逻辑,比如用ID大小分批处理
2.多字段组合不可重复的设定,解决方法:查看表设计结构,看看有没有此项设定
3.去掉执行语句1,只运行语句2.
不能解决问题可联系我
2.多字段组合不可重复的设定,解决方法:查看表设计结构,看看有没有此项设定
3.去掉执行语句1,只运行语句2.
不能解决问题可联系我
追问
这两个语句不是同时执行的,每次只执行一个语句,而且执行语句一的受影响行返回值大于语句二。
~(/ □ \)~
其实还有个日期限制条件,我把出问题的记录对应的日期改早一些就能成功了。
出问题的时候,执行的影响行数完全不是最大的呀。说的有点乱,方便的话QQ一下可以么。
追答
381549518
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |