[SP-pm] DBIx::Class

Kojo rbsnkjmr at gmail.com
Sat Sep 14 10:14:37 PDT 2013


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 <jniltinho at gmail.com> escreveu:

> Lucas boa essa sua dica.
>
>
> Em 14 de setembro de 2013 12:44, Lucas Mateus <
> lucasmateus.oliveira at 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 at bla') and email = 'fulano at 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 <shonorio at 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 at 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 at 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 at pm.org
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20130914/d9490267/attachment.html>


More information about the SaoPaulo-pm mailing list