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语句是在数据库上执行的。


版权声明:本文为weixin_41609327原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。