Usa MERGE
Il tuo SQL non riesce perché 2 chiamate simultanee sovrapposte e molto vicine diventeranno entrambe "false" da EXISTS prima che si verifichi INSERT. Quindi entrambi provano a INSERT e ovviamente uno fallisce.
Questo è spiegato meglio qui:Seleziona/Inserisci versione di un Upsert:esiste un design pattern per una concorrenza elevata? Questa risposta è vecchia e si applica prima dell'aggiunta di MERGE