<div dir="ltr"><div>Eu faço isso com o DBI:</div><div><br></div><div>my $query_select = "SELECT * FROM table WHERE e_mail = ?";</div><div>my $query_insert = "INSERT INTO table (e_mail) VALUES ($e_mail);<br></div>
<div><br></div><div>$sth = $dbh->prepare($query_select);</div><div><br></div><div># Se nao retornou nada no Select</div><div>if ($sth->execute($e_mail) eq '0E0'){</div><div>     # Insert</div><div>     $sth = $dbh->prepare($query_insert);</div>
<div>     $sth->execute($e_mail);</div><div>}</div><div><br></div><div>$ref = $sth->fetchrow_hashref();</div><div>$e_mail = $ref->{"e_mail"}</div><div><br></div><div>$sth->finish;  <br></div></div><div class="gmail_extra">
<br><br><div class="gmail_quote">Em 14 de setembro de 2013 12:52, Nilton OS <span dir="ltr"><<a href="mailto:jniltinho@gmail.com" target="_blank">jniltinho@gmail.com</a>></span> escreveu:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">Lucas boa essa sua dica.<br><div><div class="gmail_extra"><br><br><div class="gmail_quote">Em 14 de setembro de 2013 12:44, Lucas Mateus <span dir="ltr"><<a href="mailto:lucasmateus.oliveira@gmail.com" target="_blank">lucasmateus.oliveira@gmail.com</a>></span> escreveu:<div>
<div class="h5"><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
        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.<br>
<br>
        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.<br>
<br>
        Algo assim:  select id from users where email_md5 = md5('fulano@bla') and email = 'fulano@bla';<br>
<br>
        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.<br>


<br>
<br>
Em 14/09/2013, às 12:06, Solli Honorio <<a href="mailto:shonorio@gmail.com" target="_blank">shonorio@gmail.com</a>> escreveu:<br>
<div><div><br>
> Pessoal<br>
><br>
> 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.<br>


><br>
> 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.<br>
><br>
> 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").<br>
><br>
> Abraços,<br>
><br>
> Solli Honorio<br>
><br>
> --<br>
> "o animal satisfeito dorme". - Guimarães Rosa<br>
</div></div><div><div>> =begin disclaimer<br>
>   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
> SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
> L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
> =end disclaimer<br>
<br>
=begin disclaimer<br>
   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
 SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
 L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
</div></div></blockquote></div></div></div><span class="HOEnZb"><font color="#888888"><br><br clear="all"><br>-- <br><div dir="ltr"><div>..............................................................................<br> <b>Nilton OS</b> | <i><b>DNA Linux a 15 anos</b></i> | <a href="http://www.linuxpro.com.br" target="_blank">linuxpro.com.br</a><br>

<br></div><i><font size="1">"Não são os grandes homens que transformam o mundo, mas sim os fracos nas mãos de um grande Deus."</font></i><br></div>
</font></span></div></div></div>
<br>=begin disclaimer<br>
   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
 SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
 L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
<br></blockquote></div><br></div>