J'utilise ceci :
begin tran;
update ... where ... ;
if @@rowcount = 0
insert ...
commit tran;
Si je comprends bien, avec les index appropriés en place, la mise à jour place des verrous de plage appropriés qui empêcheraient les autres d'insérer la même chose simultanément.