sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvilket er bedre - at smide en undtagelse eller kontrollere for fejl på forhånd

Du bør gøre "prøv-og-fang undtagelse"-metoden, simpelthen fordi du skal gøre det alligevel.

Hvis du tjekker først, er der intet til hinder for, at nogen indsætter en række for den pågældende bruger mellem din check og dit indstik, i hvilket tilfælde brugeren vil være i tabellen, selvom din check ikke fandt den.

Kort for at være i stand til at køre check-and-insert inden for en form for transaktion (så ingen andre kan indsætte den bruger i mellemtiden). du kan ikke være sikker på, at ikke-undtagelsen vil virke.

Og selvom mange DBMS'er yder transaktionssupport, kender jeg ikke til noen der låser en række, du endnu ikke har indsat :-)

Selvfølgelig, hvis din applikation er designet på en sådan måde, at kun din proces vil indsætte brugere (og serialiseres), kan du bruge check-first-metoden. Men jeg ville indsætte mange kommentarer til, at det skal tages op igen, hvis du nogensinde skalerer op.



  1. Fejl java.sql.SQLEundtagelse:ORA-00911:ugyldigt tegn

  2. Eksporter dataordbog for min database ved hjælp af MySQL Workbench CE?

  3. Måling af "Observer Overhead" af SQL Trace vs. Extended Events

  4. Kan ikke oprette forbindelse til min AWS-databaseinstans | psql:kunne ikke oprette forbindelse til serveren:Operation timeout