MySQL有个估计是为性能而设计成这样的地方:即当update语句所设定的值和原值一样的时候,update不会更新该行数据,也就是会出现“影响的行数为0”这一状况,而sqlserver和oracle的update,无论值和原值是否相同,只要update设置的值不违背数据表的值类型和范围,就会得到执行。实际开发中,有很多外部库访问mysql需要用“影响的行数大于0”这一点来判断操作数据库是否成功了,但是MySQL这种明明成功了但是返回值为0这一特性极其蛋疼,难道非要在update之前先用一次SELECT语句来检测match吗?这就反而降低了效率,难道就没有办法强制命令MySQL执行update吗?
解决方案 »
- 定时备份和删除数据
- 后台调用存储过程的时候,怎么传进去一个临时变量呀,急~~~~~坐等
- ORDER BY 和 WITH ROLLUP 的问题
- 请教,能否对时间建立索引提高查询效率
- 执行OPTIMIZE TABLE后,为什么ibdata1文件大小并没有改变?
- mysql API BLOB数据的读写
- mysql并发能力的问题!大家进来看一下
- windows下面mysql查询如何输出到文件
- 请问MySQL的性能和允许存储的数据大概为多少.来者有分
- 使用存储过程插入100行随机的记录,怎么老出现重复的值?
- 两个相关联的表,P_NO(编号)为工资表外键,下面的语句对吗?
- mysql新建表时如何限定字段值的范围?
你现在就是存在这种情况?
但是是不是还会出现 你update的数据不存在,所以返回的行数是0.那这种情况你怎么解决或者怎么定性啊!
如果=0, 则没有匹配的行。其它的,如果update操作失败,则会通过mysql_error得到错误消息,是另外一回事。
你碰到了反例?还是没有适当的错误处理?