sql >> Databasteknik >  >> RDS >> PostgreSQL

Vilket är bättre - kasta ett undantag eller kontrollera fel i förväg

Du bör göra "försök-och-fånga undantag"-metoden helt enkelt för att du måste göra det ändå.

Om du kontrollerar först, finns det inget som hindrar någon från att infoga en rad för den användaren mellan din check och din inlaga, i så fall kommer användaren att finnas i tabellen även om din check inte hittade den.

Kort om att kunna köra check-and-insert inom någon sorts transaktion (så att ingen annan kan infoga den användaren under tiden). du kan inte vara säker på att icke-undantaget kommer att fungera.

Och även om många DBMS tillhandahåller transaktionsstöd känner jag inte till några som kommer att låsa en rad som du ännu inte har infogat :-)

Naturligtvis, om din applikation är utformad på ett sådant sätt att endast din process kommer att infoga användare (och serialiserad), kan du använda check-first-metoden. Men jag skulle lägga in många kommentarer om att det kommer att behöva ses över om du någonsin skalar upp.



  1. ORA-29908:saknad primär anrop för sidooperatör

  2. Hur QUOTE() fungerar i MariaDB

  3. Välj en specifik kund i MYSQL?

  4. Hur man sparar portletpositioner