关于验证是否重复的一些建议

这是一个比较现实点的问题了,就说判断一个用户是否存在的问题,一般情况下我们会用"select count(*) from t_bill tb where tb.t_bill_code = ?"这句话是说统计有多少条相同记录,而我们真正的需求是只要有一条记录就返回,所以代码应该写成成"select count(1) from dual where exists (select * from t_bill tb where tb.t_bill_code = ? )"。当然,这还是不行,因为现在我们遇到的是电信项目,就如现在的一条语句,比如客户人员比较少的河北石家庄,上千人的小手同时点击查询,当他们查询的结果肯定就是一样的(如果那个东西不存在),然后同时点插入,当然了,第一个插入的时候是没有问题的,不过之后的人插入,就会抛出唯一性异常,这是由于在查询时候没有进行相关的队列造成的,所以在查询的时候我们常常会在这种模块里面使用锁,使得可以单一的进行完成之后其他人才能继续, :oops: 这也是没有办法的办法,虽然在性能上有一定风险,但是相比并发量的数据风险,程序上的还是好解决一些
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值