Powinieneś zastosować metodę „spróbuj i złap wyjątek”, ponieważ i tak musisz to zrobić.
Jeśli najpierw sprawdzisz, nic nie powstrzyma kogoś, kto wstawi wiersz dla tego użytkownika między czekiem a wstawieniem. W takim przypadku użytkownik będzie w tabeli, nawet jeśli czek go nie znalazł.
Brak możliwości uruchomienia sprawdzania i wstawiania w ramach jakiejś transakcji (aby nikt inny nie mógł w międzyczasie wstawić tego użytkownika). nie możesz być pewien, że bez wyjątku zadziała.
I chociaż wiele DBMS zapewnia wsparcie transakcyjne, nie znam żadnych który zablokuje wiersz, który musisz jeszcze wstawić :-)
Oczywiście, jeśli twoja aplikacja jest zaprojektowana w taki sposób, że tylko twój proces będzie wstawiał użytkowników (i serializował), możesz użyć metody check-first. Ale zamieszczałbym obszerne komentarze, że będzie musiał zostać ponownie odwiedzony, jeśli kiedykolwiek zwiększysz skalę.