Transação / RollBack

Discussão em 'Progress 4GL' iniciado por kikofr, Dezembro 3, 2010.

  1. kikofr

    kikofr Membro Participativo

    Bom dia,

    Gostaria de tirar uma duvida, no Progress 4GL, existe alguma forma de se desenvolver transações com possibilidade de ser realizado um ROLLBACK da transação?

    Ou é necessário desenvolver toda a rotina de rollback na mão?

    Obrigado desde já.
  2. Rogerio

    Rogerio Moderator Moderador Equipe de Suporte

    Você pode usar o Bloco

    DO TRANSACTION:
    END.
  3. kirchner

    kirchner Membro Participativo Moderador

    kikofr,

    A linguagem ABL tem um monte de padrões no que diz respeito a blocos e transações.
    Dependendo a situação e o erro o rollback é automático. Se tudo estiver ok.

    A naba é que cada tipo de bloco (DO, REPEAT, FOR EACH) funciona diferente.
    É claro que ninguém lembra de tanta picuinha, isso não fica claro no código. Mas está no manual.
    Nada como o bom e velho BEGIN TRANSACTION e COMMIT ou ROLLBACK.
  4. Rodrigo Rossetto

    Rodrigo Rossetto Membro Participativo

    Rollback em progress, depende muito do caso.

    No caso do FOR EACH enquanto ele não chegar no END ele não efetua a alteração. Se existe uma faixa e ocorrer o erro durante, tudo que ficou para trás precisa ser desfeito na mão ou utilizando ON ERROR UNDO, LEAVE. Claro que variáveis e temp-tables não pode estar com NO-UNDO, que fará com que o cliente não armazene todas as interações. Esse processo faz o inverso do programa, gravando todos os passos para desfazer, dependendo do tamanho do código e da faixa de alteração/exclusão afetará muito no desempenho da operação.

    No caso do DO ele não gera transação no banco, é preciso informar TRANSACTION. Já REPEAT e FOR EACH geram transação.

Compartilhe esta Página