开发者社区> 问答> 正文

关于数据库重复插入判断的问题。

之前做过一个发红包的网页程序,当时遇到了一个很恐怖的情况,就是被人恶意刷红包。

数据库服务器用的是SQL Server。

在每条新记录插入前都会判断是否有重复的username字段的记录,如果该字段值的记录已经存在则不再插入新记录。

然而,对方刷包的速度非常快,每次插入请求只用了几十毫秒,而且同一请求会在1秒钟内发送数十次。

问题出现了,依然有重复用户名的记录被插入到数据库了,这让人很费解。怎么会出现这种情况呢?

展开
收起
a123456678 2016-07-04 11:44:37 2102 0
1 条回答
写回答
取消 提交回答
  • 加username的唯一主键可勉强解决,不过不是最优方案。
    为什么会出现重复是因为并发控制是在应用程序中处理,比如A时刻和B时刻从数据库读取到都没有这个username,于是就各自执行插入,于是就重复了。

    2019-07-17 19:50:35
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
RowKey与索引设计:技巧与案例分析 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载