谨慎使用 IF NOT EXISTS()INSERT

**谨慎使用**

今天记录一个很基础的问题,可是这个问题贻害不浅并发

if not exists (select 1 from [dbo].[M_USER] where OpenId=@OpenId) begin insert into [dbo].[M_USER] (OpenId) values(@OpenId) endide

上面这个语句并不能阻止重复数据,本身debug的时候是没问题的,当并高并发的时候就会有问题。若是必定要这么晚,必须在外面加上事务。或者改写成下面的语句。

insert into [dbo].[M_USER] (OpenId) select @OpenId where not exists  (select 1 from [dbo].[M_USER] where OpenId=@OpenId)高并发

相关文章
相关标签/搜索