-----Mensagem Original----- From: Alexsandro Haag
Sent: Friday, September 16, 2016 10:44 AM
To: pgbr-geral@listas.postgresql.org.br
Subject: Re: [pgbr-geral] RollBack isolado, existe?

    if (erro){
        /* ROOLBACK      */
            update tabela set status = "Erro" where ....
        TRANSACAO = true; // Reinicia a transação, não sai do while
    }else{
        if (conta == 1000){
            COMMIT
            conta = 0;
            TRANSACAO = true; // Reinicia a transação
        }

Marcelo, o que você pode evitar aqui seria o "rollback". Ao invés de rollback poderia usar um campo para marcar o registro como "erro" e seguir o processo. Daí na lógica da sua rotina, já que não vai sair do laço, você trata para ignorar estes registros que tiverem status de erro e processa apenas os demais.

Alex

Então Alex, o detalhe é que vão existir muitos erros (indefinidos) que vou tratar com o tempo e durante esse tempo tenho que manter os OK Existem situações que não dá pra prever todos os erros, então entra o SAVEPOINT sugerido pelo Everton Veja que a situação não é critica, pois posso ignorar o erro e continuar, mas validar tudo antes seria complicado, pois vão existir casos de erros a serem estudados. Lembrando agora, o PGAdmin tem a opção de Ignorar erros quando executamos um SQL longo, possivelmente ele faz uso desse SAVEPOINT, pois ele não conseguiria validar conforme minhas necessidades, ele vai ignorar as excessões e manter os registros ok
Esse é o ponto.

Marcelo
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a