Pular para o conteúdo

Marcado: , ,

Visualizando 8 posts - 1 até 8 (de 8 do total)
  • Autor
    Posts
  • #154310
    Avatar de ElizaEliza
    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
      Avatar de José Laurindo ChiappaJosé Laurindo Chiappa
      Moderador

        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
        Avatar de ElizaEliza
        Participante

          Bom dia,

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

          É interessante!!

          Obrigada pelo retorno.

           

          #154357
          Avatar de José Laurindo ChiappaJosé Laurindo Chiappa
          Moderador

            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
            Avatar de MottaMotta
            Participante

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

              #154378
              Avatar de Sergio WilliansSergio Willians
              Mestre

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

                https://www.profissionaloracle.com.br/2016/09/11/alterando-a-ordem-de-execucao-de-triggers/

                #154387
                Avatar de ElizaEliza
                Participante

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

                  Obrigada pessoal.

                  #154419
                  Avatar de MottaMotta
                  Participante

                    Show!

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