Użyj MERGE
Twój kod SQL nie powiedzie się, ponieważ 2 równoczesne nakładające się i bardzo bliskie wywołania dostaną "fałsz" z EXISTS, zanim nastąpi INSERT. Więc oboje próbują WSTAWIĆ i oczywiście jeden się nie udaje.
Więcej wyjaśniono tutaj:Wybierz/wstaw wersję Upsert:czy istnieje wzorzec projektowy zapewniający wysoką współbieżność? Ta odpowiedź jest jednak stara i obowiązuje przed dodaniem MERGE