MySQL更新資料之前是否判斷資料有沒有被修改

來源:互聯網
上載者:User
MySql{MyPhpAdmin}裡執行一條更新語句:
update tableA set a=1 where id=2
如果a原來的值就是1,MySql就直接返回了“影響了0行” 。
如果a原來的值不會1,就會返回“影響了1行”;
難道MySql在執行update語句之前還拿新值和舊值比較,如果有修改才修改之,沒有修改的話,也就不執行update語句了嗎?

還有PHP裡面
執行mysql->query();語句的話,如果語句本身沒有錯誤,就直接返回true。我執行update ,如果文法正確,條件錯誤,query直接返回true。
如果用mysql->affected_rows 判斷的話,就會出現上面mysql裡面講的問題:語句正確,條件正確,就是沒有修改資料,返回0行。這樣我如何知道我的update語句真正的執行成功,影響到具體的資料。


回複討論(解決方案)

看著就糾結。。
必須要知道語句是否正確,這條資料是否存在,update之後是否被修改。
我覺得要先select一下才能滿足你的所有需求。

看著就糾結。。
必須要知道語句是否正確,這條資料是否存在,update之後是否被修改。
我覺得要先select一下才能滿足你的所有需求。



資料肯定存在的,語句肯定正確,注釋MySql傳回值有問題





--珍愛生命,遠離MySql

這樣我如何知道我的update語句真正的執行成功,
-- 返回true就表示成功了

影響到具體的資料。
mysql->affected_rows

是不是可以加一個記錄修改時間的欄位,這樣在沒有修改其他內容的情況下,影響到的行數就不是0了

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.