zoukankan      html  css  js  c++  java
  • SQL Server select并发导致insert多条数据

    场景:

      在开发某活动时,一个用户只能参与一次,因此insert之前要判断数据库是否存在数据,若不存在插入,若存在不操作。但是当请求并发时,数据库insert操作尚未执行,这样select的结果为用户未参与,导致插入了多条数据。

    思路:

      第一次select、insert必须要执行完毕,才能进行第二次。

    解决方案:

      一、

    1 INSERT INTO TABLE_NAME (createDate,字段2,字段3,字段4,user_id)
    2 SELECT now(),值2,值3,值4 ,#{user_id} FROM TABLE_NAME WHERE
    3 NOT EXISTS (SELECT * FROM TABLE_NAME WHERE DATE(createDate)=DATE(now()) AND user_id = #{user_id})

    二、

    1 begin tran 
    2 declare @count int =0
    3 select @count=[Count] from tb_name WITH(UPDLOCK,HOLDLOCK) where id=1
    4 select @count as count1
    5 waitfor delay '00:00:30'
    6 update tb_name set [Count]=@count+1 where id=1
    7 commit tran 
    8 select * from tb_name
  • 相关阅读:
    关于Combobox的多选和单选情况
    Struts2的method{1}用法
    ${sessionScope.user}的使用方法
    jQuery 遍历
    jQuery的Event对象(实例)。
    度熊全是由1构成的字符串
    Prime Ring Problem
    八皇后问题
    Hanoi
    全排列
  • 原文地址:https://www.cnblogs.com/BurtBlog/p/6296002.html
Copyright © 2011-2022 走看看