U moet de "try-and-catch-uitzondering"-methode gebruiken, simpelweg omdat u het toch moet doen.
Als u eerst controleert, is er niets dat iemand ervan weerhoudt een rij voor die gebruiker in te voegen tussen uw cheque en uw invoeging, in welk geval de gebruiker in de tabel zal staan, ook al heeft uw cheque deze niet gevonden.
Behalve het kunnen uitvoeren van de check-and-insert binnen een soort transactie (zodat niemand anders die gebruiker tussentijds kan invoegen). je kunt er niet zeker van zijn dat de niet-uitzondering zal werken.
En hoewel veel DBMS' transactieondersteuning bieden, ken ik er geen dat zal een rij vergrendelen die je nog moet invoegen :-)
Als uw applicatie zo is ontworpen dat alleen uw proces gebruikers invoegt (en geserialiseerd), kunt u natuurlijk de check-first-methode gebruiken. Maar ik zou overvloedige opmerkingen plaatsen met de strekking dat het opnieuw moet worden bekeken als je ooit opschaalt.