1. 程式人生 > >mysql執行update語句受影響行數是0

mysql執行update語句受影響行數是0

意義 bubuko mys eas select class 多次 版本 匹配

mybatis連接mysql數據庫,發現同一個update執行多次,返回的int值都是1。

我記得同樣的update再次執行時 受影響行數是0。

後來發現,我之前一直用的SQLyog是這樣子的。

原來,不同的連接客戶端執行update給出的受影響行數不同。

技術分享圖片

技術分享圖片

技術分享圖片

對於再次返回0,網上的資料是,MySQL 為了提升性能,當它發現要執行的修改內容與數據庫中完全一致時,對它而言,此時修改是毫無意義的,反而會消耗一次執行修改的性能,於是它就不再做修改,因而受影響行數就是0。

至於mybatis,網上有說mybatis這個第三方持久化框架返回來的是被匹配的影響行數,所以返回的始終是1,那如果想要以返回的行數作為判斷結果,需要在db連接串裏使用useAffectedRows=true,即

jdbc:mysql://127.0.0.1:3306/cn_appoint?characterEncoding=utf-8&useAffectedRows=true

經初步測試,並不起作用,始終返回的還是1。執行select version();查看mysql版本:5.6.29-mycat-1.6-RELEASE-20161028204710

mysql執行update語句受影響行數是0