Pular para o conteúdo
Visualizando 9 posts - 1 até 9 (de 9 do total)
  • Autor
    Posts
  • #83502
    Manu
    Participante

      Bom dia!

      Estou com o seguinte problema. Tenho várias triggers que são disparadas a partir da mesma tabela. Porém elas não podem ser disparadas
      aleatóriamente, precisam seguir uma ordem definida. Alguém sabe como
      fazer isto no Oracle 10g e 9i? Se não houver solução no 9i não há problemas. Basta para o 10g?

      Muito obrigado!

      #83505
      Avatar photoRegis Araujo
      Participante

        Manu, boa tarde!

        E se você chamar no final do seu codigo dentro da trigger a proxima trigger?? E assim, sussessivamente…

        Mas se houver uma maneira bem mais simples e correta, eu tbm gostaria de saber…

        Abraços…

        #83508
        Manoel872
        Participante

          Triggers não são gatilhos que são disparadas ao evento? Teria como ele chamar a trigger? Confuso!

          #83510
          Avatar photoRegis Araujo
          Participante

            Manoel,

            você esta certissimo…

            Equivoco meu…

            Manu,

            Desculpe a resposta..

            O Manoel esta certo, a Trigger somente é disparada com um determinado evento na tabela, creio que você somente conseguirá dispara-los em uma ordem se conseguir que os eventos nesta tabela também sigam esta ordem…

            #83511
            Manu
            Participante

              Boa tarde!

              Estive pesquisando e achei na versão 11g uma instrução chamada FOLLOWS
              que serve para isso. Ela executa a trigger na orde desejada. Existe algo semelhante no 10g? Pesquisei e não achei nada.

              Valeu!

              #83515
              Ricardo Portilho Proni
              Participante

                Você não pode colocar todo o código das 4 triggers em uma trigger só, na ordem que você quer executar?
                Não é o mesmo que uma trigger chamar a outra, é colocar todo seu código PL/SQL junto, na ordem que quer, e uma trigger apenas executa-lo.

                #83520
                Rodrigo Mesquita
                Participante

                  Separe as triggers em after, before ou instead of. Se der faça uma pra cada evento, caso não, separe dentro do código por evento

                  if updating then

                  elsif inserting Then

                  elsif deleting Then

                  end if;

                  #83535
                  Marcio68Almeida
                  Participante

                    Bom…
                    Primeiro devo alertar para o grande problema que existe quando colocamos muitas funcionalidades em triggers, se uma der qualquer problema, pode te travar todos os demais processos…
                    Triggers encadeadas é um problema maior ainda, trigger que altera uma tabela que dispara outra trigger e assim por diante…
                    Mas…
                    Se você quizer mesmo, por que não transforma tudo em procedures e a trigger chama as procedures na sequência ???

                    #83749
                    Ishii
                    Participante

                      Olá,

                      Apenas complementando… fiz alguns testes e para triggers com o mesmo tipo de evento (por exemplo after insert) a ordem será:

                      1) Banco ser criado do zero (sem objetos) por ordem de criação
                      2) No banco importado: Ordem Alfabetica (por causa da ordem de criação)

                      Mas sempre procure utilizar o minimo possivel as triggers

                      []s Ishii

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