<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          巨坑,update語句使用不當(dāng)造成的bug

          共 687字,需瀏覽 2分鐘

           ·

          2022-05-19 08:37

          點(diǎn)擊關(guān)注公眾號(hào),Java干貨及時(shí)送達(dá)

          作者:菩提樹下的楊過

          來源:www.cnblogs.com/yjmyzz/p/13562182.html


          業(yè)務(wù)系統(tǒng)中,使用 update 語句更新數(shù)據(jù)是再正常不過的場(chǎng)景,我們也經(jīng)常通過 update 更新的行數(shù),來做一些業(yè)務(wù)判斷。

          類似下面的偽代碼:(mybatis + mysql 場(chǎng)景)

          if?(xxxMapper.updateByPrimaryKeySelective(entity)>0){
          ???//更新成功,做其它業(yè)務(wù)處理
          }

          踩坑

          但是這里有一個(gè)坑,mysql 中 update 影響行數(shù) >0 是有條件的,假如有一張表:

          里面只有一條記錄(ID=1),我們用 update 更新一把 ID=1 的這條記錄:

          這一行成功更新,影響行數(shù)為 1,理所當(dāng)然,然后把這條 update 語句再執(zhí)行一次:

          這時(shí)候,返回的影響行數(shù)為 0,也就是說,當(dāng)待更新的記錄與原始記錄舊值相同時(shí),mysql 其實(shí)并不會(huì)做任何更新。

          換言之,如果上游傳過來的數(shù)據(jù),與數(shù)據(jù)庫(kù)本身的舊值相等,沒有變化時(shí),update 語句影響行數(shù)為 0。

          這與另一種場(chǎng)景:"更新一條并不存在的記錄,影響行數(shù)返回 0"無法區(qū)分。

          結(jié)論

          不要使用 update 語句的影響行數(shù)做重要的業(yè)務(wù)判斷!

          ? ? ?

          1、五年官司終敗訴,萬億爬蟲大軍蠢蠢欲動(dòng)
          2、程序員最硬大佬,你絕對(duì)想不到!!!
          3、IntelliJ IDEA快捷鍵大全 + 動(dòng)圖演示
          4、打不過就加入?微軟強(qiáng)推“親兒子”上位,還是中國(guó)特供版
          5、微信翻譯,快把上海老外搞瘋了

          點(diǎn)分享

          點(diǎn)收藏

          點(diǎn)點(diǎn)贊

          點(diǎn)在看

          瀏覽 46
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲黄视频在线播放网址 | 直接能看的黄色网址 | 国产 亚洲 无码 激情 | 一道本不卡 | 国产美女操逼视频 |