Ik gebruik dit:
begin tran;
update ... where ... ;
if @@rowcount = 0
insert ...
commit tran;
Zoals ik het begrijp, plaatst de update, met de juiste indices op hun plaats, de juiste bereikvergrendelingen die zouden voorkomen dat anderen tegelijkertijd hetzelfde invoegen.