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# 程序。我遇到了行被插入两次的情况。我认为问题是这个查询。这个想法是查询可以在相同的情况下运行两次@Id
。第一次应该是插入,第二次应该是更新。
请注意,查询有一个(no lock)
. 这是否意味着查询不一定以 FIFO 方式运行?我相信只有当我异步运行这个查询时才会出现两行问题。