GPO ( Grupo de Profissionais Oracle )
A maior comunidade Oracle do Brasil !

Home Fóruns SQL e PL/SQL Ordem de execução das triggers

Marcado: , ,

Visualizando 8 posts - 1 até 8 (de 8 do total)
  • Autor
    Posts
  • #154310
    Eliza
    Participante

    Boa tarde pessoal,

    1 trigger, 2 triggers, 3 triggers…
    Banco oracle 12G

    Qual a sequência em que elas são executadas?
    exemplo: tabela ITENS

    triggers:
    1- itens_update1
    CREATE OR replace TRIGGER “AD_TRG_UPD_ITENS_dados”
    BEFORE UPDATE ON itens
    FOR EACH ROW
    DECLARE ….

    2- itens_update2
    CREATE OR replace TRIGGER “AD_TRG_UPD_ITENS_campos”
    BEFORE UPDATE ON itens
    FOR EACH ROW
    DECLARE ….

    Se eu precisar que a itens_update2 seja executada antes da itens_update1 ?

    #154316

    Tudo bem ? Então, cfrme https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:50388450774416 (e a Documentação Oracle mesmo) já nos dizem, por default a única Garantia em termos de ordem de execução é que as trigger BEFORE  gerais são executadas ANTES das BEFORE FOR EACH ROW, depois são executadas as triggers AFTER gerais, depois são executadas as AFTER FOR EACH rows, é é só isso : no seu exemplo, onde vc tem DUAS triggers do tipo BEFORE UPDATE … FOR EACH ROW, a ordem é INDETERMINADA, simplesmente Não Tem Como , nessa situação default, vc indicar ordem de execução….

    O que vc PODE fazer nesse sentido (SE o seu database é 11g ou superior, na opção b), E SE vc tem permissão pra alterar as triggers, pra ambas as opções)  é:

    a)  consolidar o código das duas triggers numa só

    OU

    b)  re-escrever as triggers usando as cláusulas FOLLOW e PRECEDES, com elas vc indica que a trigger X precede a trigger Y…. Dá um look em http://www.grassroots-oracle.com/2009/09/precedes-follows-follows.html e https://oracle-base.com/articles/11g/trigger-enhancements-11gr1 para exemplos, mas Não Deixe de consultar EXATAMENTE no manual da SUA versão quais são as Restrições para essas cláusulas, em especial se vc usa versionamento via Edition….

     

    Abraços,

     

    José Laurindo Chiappa

     

     

    #154356
    Eliza
    Participante

    Bom dia,

    Nunca aconteceu, então nunca vi essa funcionalidade , FOLLOW e PRECEDES.

    É interessante!!

    Obrigada pelo retorno.

     

    #154357

    Bom dia, blz ? Sim, pra mim também, faz anos e anos que não uso esse tipo de  funcionalidade, não é algo que vc usa frequentemente, não… Mas ok, fico contente de ter te apresentado algo novo, e com certeza pra mim também a relembrada foi útil, uma das razões que eu frequento fóruns e grupos de discussão , é para usar recursos que não são rotineiros, de forma a os relembrar pra quando eu precisar deles…..

     

    Abraços,

    José Laurindo  Chiappa

    #154370
    Motta
    Participante

    Vi isto uma vez no Imasters , anotei mas nunca usei , mas nunca se sabe. 🙂

    #154378

    O Jefferson escreveu um artigo bacana sobre isso, aqui no GPO.

    #154387
    Eliza
    Participante

    Muito legal essa documentação. Mais conhecimento sobre trigger.

    Obrigada pessoal.

    #154419
    Motta
    Participante

    Show!

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