Tratamento de Exception com Commit e Rollback
- dr_gori
- 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
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 ?
Você quer fazer ROLLBACK caso dê algum erro durante a execução de sua procedure ?
-
- 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
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.
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.
- fsitja
- 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
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.
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.
-
- 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!!!
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.
Uma vez feita a ação da trigger, não tem mais rollback pois já da o commit.
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 12 visitantes