**謹慎使用**
今天記錄一個很基礎的問題,可是這個問題貽害不淺併發
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)高併發