if exists (select 1 from schema.TableName (nolock) where Id = @id)
update schema.TableName set DocumentXML = @documentXml, [email protected], 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方式運行?我相信只有我異步運行此查詢時纔會出現兩行問題。
[只插入一行,如果它不在那裏]可能的重複(http://stackoverflow.com/questions/3407857/only-inserting-a-row-if-its-not-already-there) –