更新是没必要判断是否存在的,判断是否存在不一定是为了更新,而是为了检查许可权。

比如更新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框架,更新失败,不会保存


推荐阅读:
相关文章