Jeg bruger denne:
begin tran;
update ... where ... ;
if @@rowcount = 0
insert ...
commit tran;
Som jeg forstår det, med de rigtige indekser på plads, placerer opdateringen passende rækkeviddelåse, der ville forhindre andre i at indsætte det samme samtidigt.