- Este tópico contém 7 respostas, 4 vozes e foi atualizado pela última vez 2 anos, 8 meses atrás por Motta.
-
AutorPosts
-
7 de abril de 2022 às 4:57 pm #154310ElizaParticipante
Boa tarde pessoal,
1 trigger, 2 triggers, 3 triggers…
Banco oracle 12GQual a sequência em que elas são executadas?
exemplo: tabela ITENStriggers:
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 ?
8 de abril de 2022 às 8:24 am #154316José Laurindo ChiappaModeradorTudo 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
11 de abril de 2022 às 8:36 am #154356ElizaParticipanteBom dia,
Nunca aconteceu, então nunca vi essa funcionalidade , FOLLOW e PRECEDES.
É interessante!!
Obrigada pelo retorno.
11 de abril de 2022 às 9:49 am #154357José Laurindo ChiappaModeradorBom 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
11 de abril de 2022 às 8:47 pm #154370MottaParticipanteVi isto uma vez no Imasters , anotei mas nunca usei , mas nunca se sabe. 🙂
12 de abril de 2022 às 5:41 pm #154378Sergio WilliansMestreO 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/
13 de abril de 2022 às 5:15 pm #154387ElizaParticipanteMuito legal essa documentação. Mais conhecimento sobre trigger.
Obrigada pessoal.
15 de abril de 2022 às 7:51 am #154419MottaParticipanteShow!
-
AutorPosts
- Você deve fazer login para responder a este tópico.