[Cascavel-pm] Como verificar se um registro já existe antes de inserir no banco? - RESOLVIDO

Murilo Opsfelder Araújo mopsfelder em gmail.com
Terça Outubro 24 09:09:59 PDT 2006


On 10/24/06, Luis Motta Campos <luismottacampos em yahoo.co.uk> wrote:
>   Murilo, seu único problema é a forma: esta é decididamente a mais
> dispendiosa de todas.
>
>   Tenta com este esquema:
>
>   eval{
>     $dbh->begin_work; # apenas se seu DBD suportar transações
>     # repita o ciclo prepare-execute tantas vezes quantas precisar
>     $sth = $dbh->prepare( $insert_statement );
>     $sth->execute( @parameters );
>     # commit da operação toda
>     $dbh->commit; # apenas se seu DBD suportar transações
>   } or do{ # tratamento de erro, executado apenas se o eval() falhar
>     # Começa sempre tentando fazer rollback.
>     UNIVERSAL::can( $dbh, 'rollback' ) && $dbh->rollback;
>
>     # em segundo lugar, tratamos o erro, que está registrado em $@
>     print STDERR "Problema com a inserção: $@.\n\n";
>
>     # se for necessário, tenta outra coisa qualquer aqui.
>     # inserir outro registro, chutar o usuário, o que quiser...
>   }
>
>   Como é simples de ver, isto é bem mais curto e simples do que o seu
> esquema, e deve funcionar bem (atenção: eu não testei este código).
>
>   Se você tiver perguntas, ou quiser que eu reescreva seu exemplo todo
> para este formato, como exemplo, por favor responda a esta mensagem.

Eu não sei se o meu MySQL server suporta transações. Nem sei como
utilizar esse recurso. Pelo que percebi, preciso estudar mais o banco
de dados primeiro, e concomitantemente, Perl.

Essa transação é para garantir a inserção? Ou pode garantir qualquer outro SQL?

[]s

-- 
Murilo Opsfelder Araújo
Linux User #391561
./murilo --opsfelder='araujo'


Mais detalhes sobre a lista de discussão Cascavel-pm