Měli byste použít metodu "zkuste a chyť výjimku" jednoduše proto, že to stejně musíte udělat.
Pokud nejprve zkontrolujete, nic nebrání tomu, aby někdo vložil řádek pro daného uživatele mezi váš šek a vaši přílohu. V takovém případě bude uživatel v tabulce, i když jej váš šek nenašel.
Krátce k tomu, aby bylo možné spustit check-and-insert v rámci nějaké transakce (takže nikdo jiný nemůže vložit tohoto uživatele mezitím). nemůžete si být jisti, že tato výjimka bude fungovat.
A přestože mnoho DBMS poskytuje transakční podporu, nevím o žádném tím se uzamkne řádek, který musíte ještě vložit :-)
Samozřejmě, pokud je vaše aplikace navržena tak, že pouze váš proces bude vkládat uživatele (a serializovat), můžete použít metodu check-first. Ale vložil bych hojné komentáře v tom smyslu, že pokud se někdy rozšíříte, bude nutné to znovu navštívit.