- Este tópico contém 7 respostas, 4 vozes e foi atualizado pela última vez 2 anos, 11 meses atrás por
Motta.
-
AutorPosts
-
7 de abril de 2022 às 4:57 pm #154310
Eliza
ParticipanteBoa 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 Chiappa
ModeradorTudo 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 #154356Eliza
ParticipanteBom 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 Chiappa
ModeradorBom 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 #154370Motta
ParticipanteVi isto uma vez no Imasters , anotei mas nunca usei , mas nunca se sabe. 🙂
12 de abril de 2022 às 5:41 pm #154378Sergio Willians
MestreO 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 #154387Eliza
ParticipanteMuito legal essa documentação. Mais conhecimento sobre trigger.
Obrigada pessoal.
15 de abril de 2022 às 7:51 am #154419Motta
ParticipanteShow!
-
AutorPosts
- Você deve fazer login para responder a este tópico.