A recomendação-padrão, quando o código fica extenso, é vc ter sub-
rotinas, a sua trigger ficaria tipo:

CREATE OR REPLACE TRIGGER nomedela.. eventos.. 
BEGIN
   proc_faz_inserção;
   proc_verifica_isso;
   proc_faz_aquilo;
   proc_faz-deleção;
....
END;

é isso, aí fica facílimo pra debugar, tipo, deu erro na rotina de 
delação, é a proc_faz-deleção que vc vai debugar... Não sabe 
exatamente onde está o erro, basta ter um breakpoint (ou mesmo um 
simples dbms_output) antes de cada rotina chamada... É por aí, já 
que, como eu disse, é ** documentado **  no Oracle que ordem de 
disparo das triggers de um mesmo tipo é aleatória.

 E é claro, onde possível vc deveria "enxugar" essa trigger, por 
exemplo deixando algumas regras de negócio serem resolvidas via 
constraints, simplificando a lógica usando os recursos nativos do 
Oracle (como funções analíticas & cia bela)...


[]s

 Chiappa

--- Em oracle_br@yahoogrupos.com.br, "phbuss" <[EMAIL PROTECTED]> escreveu
>
> Obrigado pela resposta chiappa...
> 
> Na verdade hoje eu tenho todo o meu código em uma única trigger, mas
> ela está um MONSTRO e ficando difícil de se dar manutenção nela.
> 
> Esta minha trigger é da minha tabela de Notas Fiscais do sistema, e 
o
> que eu pretendia dividindo a minha triggers em outras menores é
> agrupar os códigos que realizam uma determinada função (baixa de
> estoque, cálculo do valor unitário do item, cálculo dos impostos,
> etc...) a fim de facilitar a manutenção do código de cada uma destas
> partes, só que algumas destas triggers teriam que ser chamadas 
sempre
> antes de outras, a fim de garantir a integridade dos meus dados...
> 
> Se alguém souber de uma outra forma de fazer isso que estou querendo
> agradeço desde já.
> 
> Paulo Henrique Buss
> PROJEDATA Informática
> 
> --- Em oracle_br@yahoogrupos.com.br, "jlchiappa" <[EMAIL PROTECTED]> 
escreveu
> >
> > Colega, o manual "Oracle Database Concepts", cap. 17 - Triggers -
, é 
> > lapidar a respeito :
> > 
> > "Trigger Execution
> > 
> > ...
> > Fires multiple triggers in an unspecified order, if more than one 
> > trigger of the same type exists for a given statement.
> > 
> > OU seja, é POR DESIGN, DOCUMENTADAMENTE, sem ordem definida 
quando há 
> > múltiplos triggers. No máximo, no mesmo capítulo o mesmo manual 
já 
> > nos garante que as triggers do tipo BEFORE rodam antes, e as do 
tipo 
> > AFTER depois, então que se tenha uma trigger como BEFORE e outra 
como 
> > AFTER, afora isso no way.
> > 
> > []s
> > 
> >  Chiappa
> >  
> > --- Em oracle_br@yahoogrupos.com.br, Paulo Henrique Buss 
<[EMAIL PROTECTED]> 
> > escreveu
> > >
> > > Olá lista,
> > > 
> > > Estou usando Oracle9i Enterprise Edition Release 9.2.0.4.0 e 
tenho 
> > o 
> > > seguinte caso:
> > > 
> > > Em uma tabela eu tenho 2 triggers e preciso garantir que a 
> > trigger2  
> > > seja executada antes da trigger1. Já trabalhei com Firebird e 
nas 
> > > triggers deste banco havia um número que definia a ordem de 
> > execução das 
> > > triggers, mas no Oracle não encontrei esta opção...
> > > 
> > > Se alguém da lista souber como o Oracle defina a ordem das 
triggers 
> > e 
> > > como eu posso ajustar esta ordem de execução, agradeço desde já.
> > > 
> > > Abraços,
> > > 
> > > Paulo Henrique Buss
> > > PROJEDATA Informática
> > >
> >
>






--------------------------------------------------------------------------------------------------------------------------
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--------------------------------------------------------------------------------------------------------------------------__________________________________________________________________
Moderador e Fundador: Dorian Anderson Soutto [EMAIL PROTECTED]
__________________________________________________________________ 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/oracle_br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Reply via email to