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

Luis Motta Campos luismottacampos em yahoo.co.uk
Terça Outubro 24 08:19:12 PDT 2006


Murilo Opsfelder Araújo wrote:
> Não sei se fiz da melhor forma possível :) Mas funcionou como eu
> queria: não deixa inserir registros repetidos no banco.

  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.

  Putamplexos!
-- 
Luis Motta Campos
Senior System Engineer at Segula.FR
 Hobbyist Cooker and Photograph


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