Eu faço isso com o DBI: my $query_select = "SELECT * FROM table WHERE e_mail = ?"; my $query_insert = "INSERT INTO table (e_mail) VALUES ($e_mail);
$sth = $dbh->prepare($query_select); # Se nao retornou nada no Select if ($sth->execute($e_mail) eq '0E0'){ # Insert $sth = $dbh->prepare($query_insert); $sth->execute($e_mail); } $ref = $sth->fetchrow_hashref(); $e_mail = $ref->{"e_mail"} $sth->finish; Em 14 de setembro de 2013 12:52, Nilton OS <jnilti...@gmail.com> escreveu: > Lucas boa essa sua dica. > > > Em 14 de setembro de 2013 12:44, Lucas Mateus < > lucasmateus.olive...@gmail.com> escreveu: > > >> Particularmente eu valido se existe antes de inserir, acho mais >> fácil tomar a decisão (informa que ja existe ou envia um email para trocar >> a senha) é mais fácil e acertivo que tratar o erro do BD. >> >> Para tornar esse processo mais rápido eu crio um campo do tipo >> binary 16 bytes e gravo o md5 (binario sem hexadecimal) do email e utilizo >> ele para consulta. >> >> Algo assim: select id from users where email_md5 = >> md5('fulano@bla') and email = 'fulano@bla'; >> >> Onde somente o campo email_md5 tem index e você tem certeza que >> ele sempre terá 16 bytes, se você tiver 1 milhão de usuários essa consulta >> terá um custo risório. A segunda comparação é somente para evitar colisões >> de md5 e o index é feito somente no campo email_md5. >> >> >> Em 14/09/2013, às 12:06, Solli Honorio <shono...@gmail.com> escreveu: >> >> > Pessoal >> > >> > Estou escrevendo um cadastro que tem o campo email com unique index. O >> meu primeiro impulso é fazer uma pesquisa no cadastro para verificar se o >> email já não existe, mas me dei conta que se eu tentar criar o registro e o >> email já existir, vou receber um erro informando isto. >> > >> > O que vocês acham disto ? É feio jogar com o erro (mesmo tratando o >> erro de maneira correta) ? Ou é melhor deixar de viver perigosamente e >> fazer o search antes do create. >> > >> > E porquê estou com está dúvida ? Não medi, mas teoricamente gravar e >> tratar o erro deve (ou deveria) ser mais rápido (pq eu faço "apenas uma >> operação de IO"). >> > >> > Abraços, >> > >> > Solli Honorio >> > >> > -- >> > "o animal satisfeito dorme". - Guimarães Rosa >> > =begin disclaimer >> > Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ >> > SaoPaulo-pm mailing list: SaoPaulo-pm@pm.org >> > L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> >> > =end disclaimer >> >> =begin disclaimer >> Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ >> SaoPaulo-pm mailing list: SaoPaulo-pm@pm.org >> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> >> =end disclaimer >> > > > > -- > > .............................................................................. > *Nilton OS* | *DNA Linux a 15 anos* | > linuxpro.com.br<http://www.linuxpro.com.br> > > *"Não são os grandes homens que transformam o mundo, mas sim os fracos > nas mãos de um grande Deus."* > > =begin disclaimer > Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ > SaoPaulo-pm mailing list: SaoPaulo-pm@pm.org > L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> > =end disclaimer > >
=begin disclaimer Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ SaoPaulo-pm mailing list: SaoPaulo-pm@pm.org L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> =end disclaimer