Tratamento de Exception com Commit e Rollback

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
josehw
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 5
Registrado em: Seg, 04 Mai 2009 8:51 am
Localização: Maringá - PR

Olá, gostaria da saber como fazer um tratamento correto de minhas triggers e procedures, utilizando COMMIT e ROLLBACK. valeu
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Como assim?
Você quer fazer ROLLBACK caso dê algum erro durante a execução de sua procedure ?
josehw
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 5
Registrado em: Seg, 04 Mai 2009 8:51 am
Localização: Maringá - PR

Sim, por exemplo, eu tenho uma trigger q tem 2 inserts, o que eu preciso é q quando ocorrer um erro no 2º insert, dê um rollback nas informações q foram inseridas no 1º insert, entedeu?
marcelo_nunes
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 17
Registrado em: Seg, 08 Set 2008 7:35 pm
Localização: Ribeirão Preto - SP
Marcelo Nunes
Analista/Desenvolvedor Oracle

Se você estiver utilizando pragma autonomous_transaction no trigger, você terá que tratar insert a insert para caso esse processo caia no exception ele faça um rollback, com isso você coloca o commit apenas no final do trigger.
Porém se você não estiver utilizando pragma autonomous_transaction, o próprio trigger não deixará que as informações sejam "comitadas" e vai dar um rollback em tudo o que foi executado ali mesmo pois você não consegue colocar commit em trigger.
josehw
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 5
Registrado em: Seg, 04 Mai 2009 8:51 am
Localização: Maringá - PR

valeu pela atenção e pela resposta!
Avatar do usuário
fsitja
Rank: OraSauro
Rank: OraSauro
Mensagens: 611
Registrado em: Seg, 19 Jan 2009 4:29 pm
Localização: Gaúcho no Rio de Janeiro - RJ
"The scars exist to remind us that the past was real"
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html

OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist

Você não precisa do autonomous transaction no seu caso, já que há dependência entre as duas operações. Deixe a trigger dar um raise no exception no 2o insert normalmente. Na saída do seu DML que disparou a trigger, pegue a exceção e dê o rollback. Vai cancelar tudo.

Agora, muito cuidado com autonomous transaction. O ideal é tratar tudo numa transação só e decidir pelo commit ou rollback no final, para não acabar detonando com a consistência da base de dados.
RodrigoValentim
Moderador
Moderador
Mensagens: 367
Registrado em: Ter, 25 Mar 2008 3:41 pm
Localização: Salvador - BA
Rodrigo Valentim
Analista de Sistemas
Oracle Developer

Campanha: Faça uma pesquisa antes de perguntar!!!

Em trigger não se trata essas situações e sim na aplicação, porque você não testa a situação antes do processo ir pro banco?


Uma vez feita a ação da trigger, não tem mais rollback pois já da o commit.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 12 visitantes