MySQL 语句级避免重复插入—— Insert Where Not Exist

      高并发得情况下,我们不想数据库产生多条相同数据得情况下,会理所当然得选择数据库乐观锁,查询一下是否存在,如果不存在,插入。

       但是当存在多台服务器得时候,例如负载均衡,当一个客户端快速的重复的发起多次请求,这些请求分别被转发a,b两条服务器,这两台服务器再去使用查询一下是否存在,如果不存在,插入的逻辑,很显然会往库里存放两条一样的数据。

        解决上述多服务器的时候可以使用sql查询重复插入,语法如下        

INSERT INTO table(a,b) 
SELECT a,b 
FROM dual
WHERE NOT EXISTS(
      SELECT *
      FROM table
      WHERE value = ?

);

原理是,s'q'l语句是在数据库上执行的。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

左左在右边

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值