Pular para o conteúdo
  • Este tópico contém 20 respostas, 3 vozes e foi atualizado pela última vez 16 anos, 2 meses atrás por Rodrigo Mesquita.
Visualizando 6 posts - 16 até 21 (de 21 do total)
  • Autor
    Posts
  • #90304
    Anakim
    Participante

      Esqueci de postar a solução, vou colocar para se no futuro alguém tiver a mesma dúvida.
      Aproveitando dentro da trigger tem como pegar a tabela em vez de repetir o nome dela como eu fiz?
      Abaixo segue como ficou a trigger.


      CREATE OR REPLACE
      TRIGGER TEST_TRIGGER
      BEFORE INSERT ON TEST
      FOR EACH ROW
      declare
      pragma autonomous_transaction;
      total integer;
      BEGIN
      select count( :new.id_fk ) into total from test;

      if total > 2
      then
      raise_application_error( -20005, 'testsjadjkasdhjsahdjsadjhsd' );
      end if;
      END;

      #90305
      Ishii
      Participante

        Olá,

        Basicamente o PRAGMA autonomous_transaction abre outra sessão no Oracle para a execução da sua query e com isso não entra em “conflito” com a trigger que ela mesma executa.

        Como é outra “sessão” você tem que fazer a query como se fosse “outra tabela” mesmo sendo a mesma…

        Ótimo trabalho!!

        []s Ishii

        #90306
        Anakim
        Participante

          Valeu pelas ajudas e pela a explicação!!!!
          😛 😛 😛 😛 😛

          #90331
          Rodrigo Mesquita
          Participante

            boa dica Ishii, porem o registro que está sendo inserido será “visto” nesse select já que ele abre outra sessão?

            #90332
            Ishii
            Participante

              Olá,

              Se for passado como parâmetro (:new.coluna) sim será visto, pois na verdade a “outra sessão” é apenas para evitar o Table is Mutating, em versões 8.0 e anteriores para resolver isso, só com empilhamento e com 2 ou 3 triggers…

              []s Ishii

              #90334
              Rodrigo Mesquita
              Participante

                opa… não tinha visto o :new.id_fk

                valeu Ishii

                abraço

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