Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como verifico se o valor já existe na tabela?


Use uma unique constraint . Tente inserir/atualizar o registro e capturar a exceção lançada quando a restrição exclusiva for violada. Esta é a única forma de garantir endereços de e-mail únicos; a primeira verificação e, em seguida, a atualização são propensas a problemas de simultaneidade, pois é possível que outra pessoa atualize seu registro para o mesmo valor que você está tentando definir logo após a verificação e antes de atualizar o registro.

Além disso:saiba como usar where -cláusulas. Agora você está recuperando TODOS os registros, iterando sobre eles, etc., o que consome desnecessariamente muitos recursos, demora muito e é simplesmente um desperdício. Se você quiser verificar um registro que corresponda a um critério, escreva:
Select foo, bar from table where baz = 123

Onde baz = 123 é o seu critério. Imagine o que aconteceria quando você tivesse 500 ou até 500.000 registros em sua configuração atual. O banco de dados executaria sua consulta, reuniria TODAS as linhas desse banco de dados e as transferiria para seu aplicativo, onde seu aplicativo iteraria todos os 500.000 resultados. Ou você pede ao banco de dados para fazer o que é bom (e por que você o está usando em primeiro lugar):me dê o(s) registro(s) que correspondem ao critério X. Você obteria 1 ou nenhum registro (dado o exclusivo restrição):1 =algum registro corresponde ao seu critério, none =nenhum registro existe. Economiza transferindo e "tendo que olhar manualmente" 499.999 registros;-)