Erro trigger de log não executada em tabela com 02 triggers

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
tora34
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 108
Registrado em: Qua, 12 Nov 2008 6:01 pm
Localização: Campo Mourão PR
Renato Pasquini
Oracle Developer

Bom dia

estou com o seguinte problema, uma tabela possui 03 triggers. 02 executadas após o comando DML (after) e 01 executada antes (before).
Uma das triggers executada depois, mais especificamente a que cria logs da tabela, as vezes não é executada. Minha dúvida é, como não consigo determinar a ordem de execução das triggers (versão do banco Oracle Database 10g Release 10.2.0.4.0 - 64bit Production) se uma das triggers der erro durante o processo mesmo o bloco possuindo tratamento de exception (exception when others then null;) a outra trigger é executada?
Avatar do usuário
fbifabio
Moderador
Moderador
Mensagens: 199
Registrado em: Ter, 22 Fev 2011 1:51 pm
Localização: São Paulo - SP
Contato:
Fábio Prado
www.fabioprado.net

@tora34,

No 10G não é possível controlar a ordem de execução das triggers. você só conseguirá fazer isso a partir do 11G.

[]s
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

Tora34,

Apesar de não ser possível especificar a ordem de execução no 10g (como o Fabio explicou), talvez você pudesse revisar suas três triggers.

Quem sabe não é possível você concentrar os procedimentos de duas triggers em uma? Veja se nas respostas deste tema (http://stackoverflow.com/questions/8319 ... r-sequence) você conseguiria encontrar uma alternativa para seu problema.

Abraços,

Sergio
Avatar do usuário
fbifabio
Moderador
Moderador
Mensagens: 199
Registrado em: Ter, 22 Fev 2011 1:51 pm
Localização: São Paulo - SP
Contato:
Fábio Prado
www.fabioprado.net

@stcoutinho

Ótima solução. É só uma questão de revisar e organizar o código em 1 só trigger!

[]s
tora34
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 108
Registrado em: Qua, 12 Nov 2008 6:01 pm
Localização: Campo Mourão PR
Renato Pasquini
Oracle Developer

Bom dia,

agradeço pelo retorno, o objetivo não é agrupar as duas triggers em uma ou determinar a ordem de execução (como dito na mensagem original que utilizo a versão 10 e tal funcionalidade não funciona).
O objetivo é tentar entender a execução de duas triggers e se uma influencia na execução da outra.
Em uma destas triggers criei um mecanismo para incluir mensagens de erro em uma tabela caso alguma exceção seja disparada, o erro apresentado é "ORA-06508: PL/SQL: could not find program unit being called".
Porém este erro não ocorre a toda atualização desta tabela, todos os usuários que a atualizam possuem a mesma ROLE.
Não sei se foi coincidência, mas no dia em que este erro foi registrado, teve uma alteração de estrutura nesta tabela.
Li alguns posts no fórum "ASKTOM" onde o mesmo explicou se algum objeto desta trigger fica invalido (direto ou indiretamente) e algum usuário está com sessão aberta, ao tentar atualizar esta tabela esta mensagem de erro é apresentada.
Porém, não consegui simular este cenário.
Mas agradeço o esforço dos senhores, continuarei minha pesquisa para conseguir identificar esta falha.

Grande abraço. Nos encontramos na GOUBTECHDAY no próximo dia 02/08
Responder
  • Informação