-----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