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

Che è meglio:lanciare un'eccezione o verificare la presenza di errori in anticipo

Dovresti eseguire il metodo "try-and-catch eccezione" semplicemente perché devi farlo comunque.

Se controlli prima, non c'è nulla che impedisca a qualcuno di inserire una riga per quell'utente tra il tuo assegno e il tuo inserto, nel qual caso l'utente sarà nella tabella anche se il tuo assegno non l'ha trovato.

A meno di essere in grado di eseguire il check-and-insert all'interno di una sorta di transazione (in modo che nessun altro possa inserire quell'utente nel frattempo). non puoi essere certo che la non eccezione funzionerà.

E sebbene molti DBMS forniscano supporto transazionale, non ne conosco nessuno che bloccherà una riga che devi ancora inserire :-)

Ovviamente, se la tua applicazione è progettata in modo tale che solo il tuo processo inserirà utenti (e serializzerà), puoi utilizzare il metodo check-first. Ma inserirei numerosi commenti sul fatto che dovrà essere rivisitato se mai si aumentasse.