PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

O que é melhor - Lançando uma exceção ou verificando se há erros com antecedência


Você deve usar o método "exceção de tentativa e captura" simplesmente porque precisa fazer isso de qualquer maneira.

Se você verificar primeiro, não há nada que impeça alguém de inserir uma linha para esse usuário entre sua verificação e sua inserção; nesse caso, o usuário estará na tabela mesmo que sua verificação não a tenha encontrado.

A menos de poder executar o check-and-insert em algum tipo de transação (para que ninguém mais possa inserir esse usuário nesse ínterim). você não pode ter certeza de que a não exceção funcionará.

E embora muitos DBMS forneçam suporte transacional, não conheço nenhum que bloqueará uma linha que você ainda precisa inserir :-)

Claro, se sua aplicação for projetada de tal forma que apenas seu processo estará inserindo usuários (e serializado), você pode usar o método check-first. Mas eu estaria colocando muitos comentários no sentido de que ele precisará ser revisto se você aumentar a escala.