关于查询数据不存在则插入的问题

今天思考业务时,想到一个之前一直忽略的问题,一个很常见的业务场景:

查询某条数据是否存在,不存在则做一些其它的动作,然后插入这条数据。

请问这种场景下需要用到事务吗?如果要用到锁,应该用到那种锁,应该锁行还是锁全表,以及在高并发场景下会存在问题吗?


另外请教另一个问题,大家工作中有被要求写SQL时不允许使用 left join 吗?今天听别人说不建议使用 left join , 不知为何。

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 3

MySQL insert on update

5年前 评论

left join 在没有关联关系的框架中用来便捷取数据,在laravel中很少用
不建议用多是因为难用索引/临时表/文件排序等问题,其实只要join都会有这些风险,如果满足需求且没有更好的方式替代,完全可以先用着,等必要等时候再优化

5年前 评论

mysql自带的一个关键词 DUPLICATE 已经帮我们解决这个问题了,num是主键,如果不存在1001这个主键则插入,存在则更新

INSERT INTO table(num,name) VALUE('1001','小李') ON DUPLICATE KEY UPDATE name= '小李'
5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!