if exists (select 1 from schema.TableName (nolock) where Id = @id)
update schema.TableName set DocumentXML = @documentXml, ClientDocumentGUID=@clientDocGuid, Incomplete = @incomplete where Id = @id
else
insert into schema.TableName
select @id, @templateId, @clientVisitGuid, @clientGuid, @chartGuid, @scmDocumentGuid, @clientDocGuid, @incomplete, getdate(), @createdByGuid, @documentXml
上記のクエリを実行するC#プログラムがあります。行が2回挿入される状況が発生します。問題はこのクエリだと思います。アイデアは、同じを指定してクエリを2回実行できるということ@Id
です。1回目は挿入、2回目は更新である必要があります。
クエリに。があることに注意してください(no lock)
。これは、クエリが必ずしもFIFO方式で実行されるとは限らないことを意味しますか?2行の問題は、このクエリを非同期で実行した場合にのみ発生する可能性があると思います。