update出现部分字段没有更新?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了update出现部分字段没有更新?相关的知识,希望对你有一定的参考价值。

我的程序是这样的:1个input,输入后 失去焦点时触发1个ajax(input的值通过get方式传递),这个ajax里通过判断input的值更新mysql数据库(库里只有1行)的2个字段。比如:
当input为1时,字段更新为A1 A2
当input为2时,字段更新为B1 B2
当input为3时,字段更新为C1 C2
但我有一次把input中的3改为1又改为2时,发现数据库里的值是B1 A2,之后我无论怎么试着复现这个问题,都只是正常的B1 B2了,这个问题只出现了1次,所以请问这是怎么回事?

参考技术A 如果多次复测都没有这个问题,那证明程序没有问题,可能只是你不小心改错了而已,不用纠结这个。

sql update操作结果

Mysql

在MySQL中只有真正对记录进行修改了的情况下,row_count才会去记录影响的行数,否则如果记录存在但是没有实际修改则不会将该次更新记录到row_count中。

update操作执行结果为更新成功的行数。
如果其值为0,有两种情况:

  • 记录不存在
    此时不会更新任何记录
  • 记录存在,要更新的字段的值与字段的当前值相同
    此时不会更新任何记录
    例如,
    update tbl_orange set value=1 where id=1;
    如果id为1的记录,字段value的值已经为1,那么update操作结果为0。

另外,与Mysql版本也有关系,5.5,5.6中真正对记录进行修改才会记录影响的行数。

For UPDATE statements, the affected-rows value by default is the number of rows actually changed. If you specify the CLIENT_FOUND_ROWS flag to mysql_real_connect() when connecting to mysqld, the affected-rows value is the number of rows “found”; that is, matched by the WHERE clause.

ORACLE

在ORACLE,只要更新的记录存在,则不论实际有没有修改数据,影响的行数都会被累积记录下来。

参考

https://blog.csdn.net/win7system/article/details/73658270

http://blog.51cto.com/samyubw/223776

https://my.oschina.net/zimingforever/blog/83810

https://dev.mysql.com/doc/refman/5.5/en//information-functions.html#function_row-count







以上是关于update出现部分字段没有更新?的主要内容,如果未能解决你的问题,请参考以下文章

jfinal model中部分字段更新

mysql 在查询中,取出字段中的部分值

表字段部分更新

EF怎样只更新表的部分字段

如何在 Scala Slick 中运行补丁/部分数据库更新?

ABAP系列SAP ABAP DYNP_VALUES_UPDATE 更新屏幕字段的函数及用法