更新是沒必要判斷是否存在的,判斷是否存在不一定是為了更新,而是為了檢查許可權。

比如更新article,傳入一個article id,那先讀取一下這個id存不存在:

select * from article where id = (id-0) and userid =(loginid-0)

我一般在update的時候直接加條件

update article set title=ddd where id = (id-0)and userid = (loginid -0)

然後根據返回結果,看match rows 0還是1。0的話就是條件沒匹配,有人試圖修改別人的文章。


從數據層面可以直接更,庫里沒有的話只是不會命中記錄行不會報錯。

從業務邏輯層面更新個數據,沒有的話得反饋一下給調用方啊,這個就得先查一下記錄了。


你也可以不判斷,直接update。


如果存在,更新自然沒關係。如果不存在,直接更新會不會報錯?


這,並不是必須得,多半是你們開發要求或者是業務要求吧,沒有數據直接update也不會有多大的問題的


不用判斷的,直接更新就行,對於資料庫來說,如果你更新的是同一個的數據,也就是說這個數據已經是最新的了,update後的結果還是一樣的話,資料庫是不會再做update了


沒有這種硬性要求,可能是你們的領導自己規定的。

一般來說,記錄應該是先載入出來、讓用戶處理以後再更新,能夠載入的前提就保證了記錄一定是存在的。如果不存在可能是因為:1. 多用戶處理衝突;2. 程序有 bug。但 1 是小概率事件,2 應該在開發過程中就消滅掉。不做事先判斷,而是當作異常處理也是合理的。


應該不需要


不會存在主鍵衝突嗎?


用的tp框架,更新失敗,不會保存


推薦閱讀:
相关文章