Pular para o conteúdo
Visualizando 4 posts - 1 até 4 (de 4 do total)
  • Autor
    Posts
  • #89396
    Roldao
    Participante

      Boa Tarde pessoal

      tenho duvidas ao fazer uma procedure e até mesmo um curso , quando utilizo o rollback em um tratamento de erro.

      quando inserir dados errado fazer um rollcack antes de afetar no banco..

      valew

      #89398
      Marcio68Almeida
      Participante

        Até você efetuar o COMMIT, os dados só estarão atualizados em sua sessão, as demais não “enxergarão” as atualizações.
        Se no final do processamento não houver erro, você efetiva o processo com o comando commit, caso você identifique algum erro ou falha, então você desfaz as aplicações com o rollback.
        Mas muita atenção, pois enquanto você está atualizando informações ninguém mais poderá atualizar, isso costuma gerar dead lock…

        #89428
        Rodrigo Mesquita
        Participante

          Completando o que o Marcio falou o seu bloco seria mais ou menos assim

          Begin
          insert…update…delete…etc…
          Commit;
          Exceptions
          When Others Then
          Rollback;
          End;

          #89438
          fsitja
          Participante

            Vai depender muito de qual erro aconteceu e do impacto dele. O rollback coloca o BD de volta ao último estado consistente conhecido, como estava no início da transação, ou seja, de volta ao último rollback ou commit realizado.
            Como o pessoal já falou, se deu erro que afete a correção e consistência dos seus dados: rollback.
            Não deu erro: commit.

            A questão mais complicada é quando dar o commit, e vai depender da atomicidade de suas operações no nível do negócio, de forma a não ficar com operações pela metade, incompletas ou inconsistentes.

            Lembre-se que commit e rollback não têm volta.

            Como boa prática, lembre-se de quando der um “when others” e fizer seu rollback, é recomendado que propague o erro com um “raise;” ou um “raise_application_error” com exceptions customizados. Desaparecer com os erros no exception pode causar muitas dores de cabeça no futuro.

            Recomendo verificar a documentação da Oracle sobre exceptions e controle de transação, que é excelente.

            Controle de Transações: http://download.oracle.com/docs/cd/B283 … #CNCPT1118
            Exceptions: http://download.oracle.com/docs/cd/B283 … LNPLS00702

          Visualizando 4 posts - 1 até 4 (de 4 do total)
          • Você deve fazer login para responder a este tópico.